{"id":380,"date":"2019-04-22T09:42:00","date_gmt":"2019-04-21T20:42:00","guid":{"rendered":"https:\/\/blog.wiseowls.co.nz\/?p=380"},"modified":"2026-03-08T00:49:16","modified_gmt":"2026-03-07T11:49:16","slug":"programmatically-submit-google-forms-with-angularjs","status":"publish","type":"post","link":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/","title":{"rendered":"Programmatically submitting Google Forms with AngularJs"},"content":{"rendered":"<p>Google Forms is a viable way to do business. We&#8217;ve seen a few successful compaines that rely on it for day-to-day operations. The flow would normally involve users entering data on the go and someone at the back office analysing the responses with Google Spreadsheet.<\/p>\n<h2 class=\"wp-block-heading\">Forms are flexible<\/h2>\n<p>One huge selling point if that we can design our own forms for all kinds of situations: racing bets, work time\/attendance, baby feeding &#8211; we&#8217;ve seen a few exotic cases. Static form data is not enough, we can opt for <a href=\"https:\/\/developers.google.com\/apps-script\">Google Apps script<\/a>. <\/p>\n<h2 class=\"wp-block-heading\">One thing remains the same though<\/h2>\n<p>Look and feel of Google forms and default validations do leave much to be desired. What if there was a way to Swap the form UI out for a custom branded SPA with fancy lookaheads and what not?<\/p>\n<h2 class=\"wp-block-heading\">There is a way<\/h2>\n<p>Surely, it all starts with making a form.  We&#8217;ll go to google forms are design a new one.  Expect to spend some time getting it right for your needs. For purposes of this demo we&#8217;ll be submitting a table (we&#8217;d cheat a bit and post JSON only though).<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"786\" height=\"506\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image.png\" alt=\"Google Form in edit mode showing form fields and question types\" class=\"wp-image-395\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image.png 786w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-300x193.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-768x494.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n<p>We&#8217;d also ensure that answers get submitted into a new spreadsheet:<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"779\" height=\"133\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-1.png\" alt=\"Chrome DevTools network tab capturing Google Forms POST request\" class=\"wp-image-396\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-1.png 779w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-1-300x51.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-1-768x131.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 984px) 61vw, (max-width: 1362px) 45vw, 600px\" \/><\/figure>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"551\" height=\"245\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-2.png\" alt=\"Google Forms hidden POST endpoint URL in network request details\" class=\"wp-image-397\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-2.png 551w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-2-300x133.png 300w\" sizes=\"auto, (max-width: 551px) 85vw, 551px\" \/><\/figure>\n<p>Now we need to grab field names Google generated for a form (it is a simple HTML form after all!). Open up form preview, and go to dev tools console in the new tab<\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"888\" height=\"102\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-3.png\" alt=\"AngularJs form template replacing default Google Forms UI\" class=\"wp-image-398\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-3.png 888w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-3-300x34.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-3-768x88.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<p>And run the following snippet in the console and note the outputs:<\/p>\n<pre class=\"wp-block-code\"><code lang=\"javascript\" class=\"language-javascript\">document.querySelectorAll('form').forEach((x) => {console.log(x.action)});\ndocument.querySelectorAll('[name^=\"entry.\"]').forEach((x) => {console.log(x.name + '=' + x.closest('[role=\"listitem\"]').querySelector('[role=\"heading\"]').innerText)})<\/code><\/pre>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"859\" height=\"367\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-4.png\" alt=\"AngularJs form template replacing default Google Forms UI\" class=\"wp-image-399\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-4.png 859w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-4-300x128.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-4-768x328.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<h2 class=\"wp-block-heading\">Oh, and one more thing&#8230;<\/h2>\n<p>Well, we&#8217;ve got the fields, but to succesfully submit the it we need to know where to submit to. Apparently, it&#8217;s a simple matter of picking up the form Id and crafting a URL: <code>https:\/\/docs.google.com\/forms\/d\/&lt;your id here>\/formResponse<\/code><\/p>\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1018\" height=\"409\" src=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-5.png\" alt=\"Custom branded form with typeahead input and validation\" class=\"wp-image-400\" srcset=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-5.png 1018w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-5-300x121.png 300w, https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/image-5-768x309.png 768w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><\/figure>\n<h2 class=\"wp-block-heading\">And we are done&#8230;almost<\/h2>\n<p>Dissecting Google forms was fun. Now we need to somehow build our own frontend to the form. For our specific use case we wanted to show off how we would go about submitting a table dynamically populated with content. As I&#8217;ve got a soft spot for AngularJs, I figured I might as well got for it.<\/p>\n<h2 class=\"wp-block-heading\">Building a custom form<\/h2>\n<p>There&#8217;s plenty of resources online on how to build SPAs, so I&#8217;d not elaborate much on that. There&#8217;s however a couple of considerations that in my opinion will make the form submission process seamless for an SPA experience. First and foremost &#8211; we&#8217;d like to stay on the same page when forms gets sent away &#8211; we&#8217;d also like to get notified when form gets submitted so our SPA can take own action. One way to do it is to submit a from into a hidden iframe and use its onLoad event to report back (that&#8217;s the method I ended up implementing in the example snippet). <\/p>\n<h2 class=\"wp-block-heading\">Talk is cheap, show me the code<\/h2>\n<p>Working example of this technique can be found here:  <a href=\"https:\/\/codepen.io\/timur_kh\/pen\/oNXYNdL\">https:\/\/codepen.io\/timur_kh\/pen\/oNXYNdL<\/a> <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Google Forms is a viable way to do business. We&#8217;ve seen a few successful compaines that rely on it for day-to-day operations. The flow would normally involve users entering data on the go and someone at the back office analysing the responses with Google Spreadsheet. Forms are flexible One huge selling point if that we &hellip; <a href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Programmatically submitting Google Forms with AngularJs&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":381,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[11],"tags":[28,27,26],"class_list":["post-380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dev","tag-angularjs","tag-google-forms","tag-js"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Programmatically submitting Google Forms with AngularJs - Timur and associates<\/title>\n<meta name=\"description\" content=\"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Programmatically submitting Google Forms with AngularJs - Timur and associates\" \/>\n<meta property=\"og:description\" content=\"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/\" \/>\n<meta property=\"og:site_name\" content=\"Timur and associates\" \/>\n<meta property=\"article:published_time\" content=\"2019-04-21T20:42:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-03-07T11:49:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1920\" \/>\n\t<meta property=\"og:image:height\" content=\"1282\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"timur\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@TimurKh\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/\"},\"author\":{\"name\":\"timur\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"headline\":\"Programmatically submitting Google Forms with AngularJs\",\"datePublished\":\"2019-04-21T20:42:00+00:00\",\"dateModified\":\"2026-03-07T11:49:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/\"},\"wordCount\":496,\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg\",\"keywords\":[\"angularjs\",\"google-forms\",\"js\"],\"articleSection\":[\"Development\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/\",\"name\":\"Programmatically submitting Google Forms with AngularJs - Timur and associates\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg\",\"datePublished\":\"2019-04-21T20:42:00+00:00\",\"dateModified\":\"2026-03-07T11:49:16+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\"},\"description\":\"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#primaryimage\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg\",\"contentUrl\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/wp-content\\\/uploads\\\/2020\\\/02\\\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg\",\"width\":1920,\"height\":1282,\"caption\":\"Photo by Ilya Pavlov on Unsplash\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/index.php\\\/2019\\\/04\\\/22\\\/programmatically-submit-google-forms-with-angularjs\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Programmatically submitting Google Forms with AngularJs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#website\",\"url\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/\",\"name\":\"Timur and associates\",\"description\":\"Notes of an IT contractor\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/blog.wiseowls.co.nz\\\/#\\\/schema\\\/person\\\/34d0ed30d573b5bc317ea990bd2e0c59\",\"name\":\"timur\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg\",\"caption\":\"timur\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/TimurKh\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Programmatically submitting Google Forms with AngularJs - Timur and associates","description":"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/","og_locale":"en_US","og_type":"article","og_title":"Programmatically submitting Google Forms with AngularJs - Timur and associates","og_description":"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.","og_url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/","og_site_name":"Timur and associates","article_published_time":"2019-04-21T20:42:00+00:00","article_modified_time":"2026-03-07T11:49:16+00:00","og_image":[{"width":1920,"height":1282,"url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg","type":"image\/jpeg"}],"author":"timur","twitter_card":"summary_large_image","twitter_creator":"@TimurKh","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#article","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/"},"author":{"name":"timur","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"headline":"Programmatically submitting Google Forms with AngularJs","datePublished":"2019-04-21T20:42:00+00:00","dateModified":"2026-03-07T11:49:16+00:00","mainEntityOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/"},"wordCount":496,"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg","keywords":["angularjs","google-forms","js"],"articleSection":["Development"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/","url":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/","name":"Programmatically submitting Google Forms with AngularJs - Timur and associates","isPartOf":{"@id":"https:\/\/blog.wiseowls.co.nz\/#website"},"primaryImageOfPage":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#primaryimage"},"image":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#primaryimage"},"thumbnailUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg","datePublished":"2019-04-21T20:42:00+00:00","dateModified":"2026-03-07T11:49:16+00:00","author":{"@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59"},"description":"Google Forms has a hidden POST endpoint. We built an AngularJs SPA that submits to it with a custom UI.","breadcrumb":{"@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#primaryimage","url":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg","contentUrl":"https:\/\/blog.wiseowls.co.nz\/wp-content\/uploads\/2020\/02\/ilya-pavlov-OqtafYT5kTw-unsplash-scaled-e1581852574473.jpg","width":1920,"height":1282,"caption":"Photo by Ilya Pavlov on Unsplash"},{"@type":"BreadcrumbList","@id":"https:\/\/blog.wiseowls.co.nz\/index.php\/2019\/04\/22\/programmatically-submit-google-forms-with-angularjs\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/blog.wiseowls.co.nz\/"},{"@type":"ListItem","position":2,"name":"Programmatically submitting Google Forms with AngularJs"}]},{"@type":"WebSite","@id":"https:\/\/blog.wiseowls.co.nz\/#website","url":"https:\/\/blog.wiseowls.co.nz\/","name":"Timur and associates","description":"Notes of an IT contractor","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/blog.wiseowls.co.nz\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/blog.wiseowls.co.nz\/#\/schema\/person\/34d0ed30d573b5bc317ea990bd2e0c59","name":"timur","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","url":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/23d55e17d4f0990ee4d12bc6e5dcfb58a292934efd62a185756876379e780b16?s=96&r=pg","caption":"timur"},"sameAs":["https:\/\/x.com\/TimurKh"]}]}},"_links":{"self":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/comments?post=380"}],"version-history":[{"count":5,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/380\/revisions"}],"predecessor-version":[{"id":1365,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/posts\/380\/revisions\/1365"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media\/381"}],"wp:attachment":[{"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/media?parent=380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/categories?post=380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.wiseowls.co.nz\/index.php\/wp-json\/wp\/v2\/tags?post=380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}