<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/xsl" href="../assets/xml/rss.xsl" media="all"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>सतत (Posts about spreadsheets)</title><link>https://baali.muse-amuse.in/</link><description></description><atom:link href="https://baali.muse-amuse.in/categories/spreadsheets.xml" rel="self" type="application/rss+xml"></atom:link><language>en</language><copyright>Contents © 2026 &lt;a href="mailto:baali@muse-amuse.in"&gt;शांतनु&lt;/a&gt; 
&lt;a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/4.0/"&gt;
&lt;img alt="Creative Commons License BY-NC-SA"
style="border-width:0; margin-bottom:12px;"
src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png"&gt;&lt;/a&gt;</copyright><lastBuildDate>Fri, 15 May 2026 09:44:59 GMT</lastBuildDate><generator>Nikola (getnikola.com)</generator><docs>http://blogs.law.harvard.edu/tech/rss</docs><item><title>Collecting user feedback</title><link>https://baali.muse-amuse.in/posts/collecting-user-feedback.html</link><dc:creator>शांतनु</dc:creator><description>&lt;p&gt;
I &lt;a href="https://baali.muse-amuse.in/posts/the-right-recipe.html"&gt;love&lt;/a&gt; simple basic things that come together to deliver a feature.
&lt;/p&gt;


&lt;p&gt;
I am working on a new &lt;a href="https://takearast.com/"&gt;product&lt;/a&gt; around guided meditation. I am learning
what makes a good meditation session and applying it to create lot of
sessions on the fly (shoutout to &lt;a href="https://www.ffmpeg.org/"&gt;ffmpeg&lt;/a&gt;, it rocks). While the hardware
is coming together at its own pace and has its own challenges (maybe I
will write a separate post around it), I wanted a quick way to share
these sessions with the right people and collect their comments and
feedback.
&lt;/p&gt;

&lt;p&gt;
My requirements were clear: clean UX that allows users to tell us
their name and what they thought of the session. For users, I didn't
want them to create account, authenticate etc. For backend, I didn't
want to over-engineer it. A central place where I can see all the
comments, a notification when I get a new feedback.
&lt;/p&gt;

&lt;p&gt;
Enter: Google Forms. Here are the steps I did:
&lt;/p&gt;

&lt;ol class="org-ol"&gt;
&lt;li&gt;created a google form with the questions&lt;/li&gt;
&lt;li&gt;published it and got the public URL&lt;/li&gt;
&lt;li&gt;I used a &lt;a href="https://github.com/tienthanh214/googleform-autofill-and-submit#extract-information"&gt;tool&lt;/a&gt; to get "&lt;code&gt;entries&lt;/code&gt;" that represented my questions in the form&lt;/li&gt;
&lt;li&gt;build a modal, custom UI that was consistent with my app (&amp;lt;iframe&amp;gt;
embedding was not needed):
&lt;img src="https://baali.muse-amuse.in/galleries/feedback-ui.png" alt="nil"&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;
A POST (on backend using python &lt;code&gt;requests&lt;/code&gt; or from javascript using
a &lt;code&gt;fetch&lt;/code&gt; call) request with all entries (questions) and their
values. That's it. Response is registered, a new line is added to
the linked spreadsheet
&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;   const GOOGLE_FORM_URL = 'https://docs.google.com/forms/d/&amp;lt;formID&amp;gt;/formResponse';
   const ENTRY = {
     name:     'entry.1122112211',
     comment:  'entry.7766177172',
     segments: 'entry.1121121218',
     version:  'entry.178019201',
   };
   const formData = new FormData();
   formData.append(ENTRY.name,     name);
   formData.append(ENTRY.comment,  comment);
   formData.append(ENTRY.segments, segments);
   formData.append(ENTRY.version,  modal.dataset.version);

   try {
     await fetch(GOOGLE_FORM_URL, {
       method: 'POST',
       mode:   'no-cors',   // Google Forms doesn't allow CORS; submission still works
       body:   formData,
     });
&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;I enabled email notification for new responses&lt;/li&gt;
&lt;/ol&gt;

&lt;div id="org9e3cda5" class="figure"&gt;
&lt;p&gt;&lt;img src="https://baali.muse-amuse.in/galleries/feedback.png" alt="nil"&gt;
&lt;/p&gt;
&lt;/div&gt;

&lt;p&gt;
When I first read about it from Claude and Stackoverflow I didn't
believe it. In the past whenever I have tried to use google products,
it was a pain, setting up authentication, configuration, permissions
etc, it was always a PAIN. I thought Google would never allow a simple
&lt;code&gt;POST&lt;/code&gt; to register a response. But they do. Whenever a user leaves a
comment, I get an email alert, I get neat breakdown of all the
feedback on google forms response section
&lt;/p&gt;

&lt;p&gt;
It is such a joy to stumble across this solution that just
works. Plus, I was casually talking about it with &lt;a href="https://punchagan.muse-amuse.in/"&gt;Punch&lt;/a&gt;, it was TIL
for him too, he loved it too and that also made me happy 😊.
&lt;/p&gt;</description><category>google</category><category>project</category><category>python</category><category>spreadsheets</category><category>tools</category><guid>https://baali.muse-amuse.in/posts/collecting-user-feedback.html</guid><pubDate>Thu, 14 May 2026 03:16:53 GMT</pubDate></item></channel></rss>