{"id":24,"date":"2016-09-08T14:32:05","date_gmt":"2016-09-08T14:32:05","guid":{"rendered":"http:\/\/www.cotocus.com\/blog\/?p=24"},"modified":"2019-07-27T10:45:22","modified_gmt":"2019-07-27T10:45:22","slug":"step-by-step-setup-to-send-form-data-to-google-sheets","status":"publish","type":"post","link":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/","title":{"rendered":"Step by step setup to send form data to Google Sheets"},"content":{"rendered":"<div class=\"blog-post\">\n<p>This blog post shows a few different types of content that&#8217;s supported and styled with Bootstrap. Basic typography, images, and code are all supported.<\/p>\n<hr \/>\n<h3>The Form<\/h3>\n<p>Create a file named <mark>index.html<\/mark> and copy this into it:<\/p>\n<pre>              &lt;!DOCTYPE html&gt;\r\n&lt;html lang='en'&gt;\r\n  &lt;head&gt;\r\n    &lt;meta charset='utf-8'&gt;\r\n    &lt;meta content='IE=edge' http-equiv='X-UA-Compatible'&gt;\r\n    &lt;meta content='width=device-width, initial-scale=1' name='viewport'&gt;\r\n  &lt;\/head&gt;\r\n  &lt;body&gt;\r\n    &lt;!-- Contact Form - sent to a Google Sheet --&gt;\r\n    &lt;form id='foo'&gt;\r\n      &lt;p&gt;\r\n        &lt;label&gt;Name&lt;\/label&gt;\r\n        &lt;input id='name' name='name' type='text'&gt;\r\n      &lt;\/p&gt;&lt;p&gt;\r\n        &lt;label&gt;Email Address&lt;\/label&gt;\r\n        &lt;input id='email' name='email' type='email'&gt;\r\n      &lt;\/p&gt;&lt;p&gt;\r\n        &lt;label&gt;Phone Number&lt;\/label&gt;\r\n        &lt;input id='phone' name='phone' type='tel'&gt;\r\n      &lt;\/p&gt;&lt;p&gt;\r\n        &lt;label&gt;Message&lt;\/label&gt;\r\n        &lt;textarea id='message' name='message' rows='5'&gt;&lt;\/textarea&gt;\r\n      &lt;\/p&gt;\r\n        &lt;div id='success'&gt;&lt;\/div&gt;\r\n        &lt;button type='submit'&gt;Send&lt;\/button&gt;\r\n    &lt;\/form&gt;\r\n\r\n  &lt;script src=\"https:\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/2.1.4\/jquery.min.js\"&gt;&lt;\/script&gt;\r\n  &lt;!-- Custom Theme JavaScript --&gt;\r\n  &lt;script src='google-sheet.js'&gt;&lt;\/script&gt;\r\n&lt;\/html&gt;<\/pre>\n<h2>The Javascript<\/h2>\n<p>Create a file named <mark>google-sheet.js<\/mark> in the same directory and copy this into it:<\/p>\n<pre><code>\r\n\/\/ Variable to hold request\r\nvar request;\r\n\r\n\/\/ Bind to the submit event of our form\r\n$(\"#foo\").submit(function(event){\r\n\r\n    \/\/ Abort any pending request\r\n    if (request) {\r\n        request.abort();\r\n    }\r\n    \/\/ setup some local variables\r\n    var $form = $(this);\r\n\r\n    \/\/ Let's select and cache all the fields\r\n    var $inputs = $form.find(\"input, select, button, textarea\");\r\n\r\n    \/\/ Serialize the data in the form\r\n    var serializedData = $form.serialize();\r\n\r\n    \/\/ Let's disable the inputs for the duration of the Ajax request.\r\n    \/\/ Note: we disable elements AFTER the form data has been serialized.\r\n    \/\/ Disabled form elements will not be serialized.\r\n    $inputs.prop(\"disabled\", true);\r\n\r\n    \/\/ Fire off the request to \/form.php\r\n    request = $.ajax({\r\n        url: \"SCRIPT URL GOES HERE\",\r\n        type: \"post\",\r\n        data: serializedData\r\n    });\r\n\r\n    \/\/ Callback handler that will be called on success\r\n    request.done(function (response, textStatus, jqXHR){\r\n        \/\/ Log a message to the console\r\n        console.log(\"Hooray, it worked!\");\r\n        console.log(response);\r\n        console.log(textStatus);\r\n        console.log(jqXHR);\r\n    });\r\n\r\n    \/\/ Callback handler that will be called on failure\r\n    request.fail(function (jqXHR, textStatus, errorThrown){\r\n        \/\/ Log the error to the console\r\n        console.error(\r\n            \"The following error occurred: \"+\r\n            textStatus, errorThrown\r\n        );\r\n    });\r\n\r\n    \/\/ Callback handler that will be called regardless\r\n    \/\/ if the request failed or succeeded\r\n    request.always(function () {\r\n        \/\/ Reenable the inputs\r\n        $inputs.prop(\"disabled\", false);\r\n    });\r\n\r\n    \/\/ Prevent default posting of form\r\n    event.preventDefault();\r\n});\r\n\t\t<\/code><\/pre>\n<h3>The Sheet<\/h3>\n<p>Go To Your gmail drive<br \/>\nclick on NEW &gt; Google Sheets to create a new Sheet.<br \/>\nGive it a name, perhaps &#8220;Form Google Sheets&#8221;<br \/>\nPut the following names into the first row of the first five columns:<\/p>\n<pre><code>Timestamp  name  email phone message<\/code><\/pre>\n<h2>The Script<\/h2>\n<p>Click on Tools &gt; Script Editor&#8230;, which should open a new window and a dialog called &#8216;Google Apps Script&#8217;. This will create one script called &#8216;Code.gs&#8217;<\/p>\n<p>Click on &#8216;Untitled Project&#8217; at the top and give this project a name: &#8216;Form Script&#8217;.<br \/>\nHighlight all of this script (we are going to replace it) and paste in the following:<\/p>\n<pre><code>\/\/  1. Enter sheet name where data is to be written below\r\n        var SHEET_NAME = \"Sheet1\";\r\n\r\n\/\/  2. Run &gt; setup\r\n\/\/\r\n\/\/  3. Publish &gt; Deploy as web app\r\n\/\/    - enter Project Version name and click 'Save New Version'\r\n\/\/    - set security level and enable service (most likely execute as 'me' and access 'anyone, even anonymously)\r\n\/\/\r\n\/\/  4. Copy the 'Current web app URL' and post this in your form\/script action\r\n\/\/\r\n\/\/  5. Insert column names on your destination sheet matching the parameter names of the data you are passing in (exactly matching case)\r\n\r\nvar SCRIPT_PROP = PropertiesService.getScriptProperties(); \/\/ new property service\r\n\r\n\/\/ If you don't want to expose either GET or POST methods you can comment out the appropriate function\r\nfunction doGet(e){\r\n  return handleResponse(e);\r\n}\r\n\r\nfunction doPost(e){\r\n  return handleResponse(e);\r\n}\r\n\r\nfunction handleResponse(e) {\r\n  \/\/ shortly after my original solution Google announced the LockService[1]\r\n  \/\/ this prevents concurrent access overwritting data\r\n  \/\/ [1] http:\/\/googleappsdeveloper.blogspot.co.uk\/2011\/10\/concurrency-and-google-apps-script.html\r\n  \/\/ we want a public lock, one that locks for all invocations\r\n  var lock = LockService.getPublicLock();\r\n  lock.waitLock(30000);  \/\/ wait 30 seconds before conceding defeat.\r\n\r\n  try {\r\n    \/\/ next set where we write the data - you could write to multiple\/alternate destinations\r\n    var doc = SpreadsheetApp.openById(SCRIPT_PROP.getProperty(\"key\"));\r\n    var sheet = doc.getSheetByName(SHEET_NAME);\r\n\r\n    \/\/ we'll assume header is in row 1 but you can override with header_row in GET\/POST data\r\n    var headRow = e.parameter.header_row || 1;\r\n    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];\r\n    var nextRow = sheet.getLastRow()+1; \/\/ get next row\r\n    var row = [];\r\n    \/\/ loop through the header columns\r\n    for (i in headers){\r\n      if (headers[i] == \"Timestamp\"){ \/\/ special case if you include a 'Timestamp' column\r\n        row.push(new Date());\r\n      } else { \/\/ else use header name to get data\r\n        row.push(e.parameter[headers[i]]);\r\n      }\r\n    }\r\n    \/\/ more efficient to set values as [][] array than individually\r\n    sheet.getRange(nextRow, 1, 1, row.length).setValues([row]);\r\n    \/\/ return json success results\r\n    return ContentService\r\n          .createTextOutput(JSON.stringify({\"result\":\"success\", \"row\": nextRow}))\r\n          .setMimeType(ContentService.MimeType.JSON);\r\n  } catch(e){\r\n    \/\/ if error return this\r\n    return ContentService\r\n          .createTextOutput(JSON.stringify({\"result\":\"error\", \"error\": e}))\r\n          .setMimeType(ContentService.MimeType.JSON);\r\n  } finally { \/\/release lock\r\n    lock.releaseLock();\r\n  }\r\n}\r\n\r\nfunction setup() {\r\n    var doc = SpreadsheetApp.getActiveSpreadsheet();\r\n    SCRIPT_PROP.setProperty(\"key\", doc.getId());\r\n}<\/code><\/pre>\n<p>Click on the Save icon.<br \/>\nSet the dropdown in the navbar (<strong>Select Function<\/strong>) to &#8216;<strong>setup<\/strong>&#8216; and click on the right-pointing triangle \u25ba to its left to run this function.<br \/>\nIt should show &#8216;Running function setup&#8217; and then put up a dialog &#8216;Authorization Required&#8217;.<\/p>\n<p>Click on &#8220;<strong>Review Permissions<\/strong>&#8220;. In the next dialog &#8216;Request for permission &#8211; Formscript would like to&#8217; click on Allow.<\/p>\n<p>In the menus click on <strong>File Menu<\/strong> &gt; Manage Versions&#8230; We must save a version of the script for it to be called. In the box labeled &#8216;Describe what has changed&#8217; type &#8216;Initial version&#8217; and click on &#8216;Save New Version&#8217;, then on &#8216;OK&#8217;.<\/p>\n<p>Back to the menus: click on <strong>Edit Menu<\/strong> &gt; Current project&#8217;s triggers. In this dialog click on <mark>&#8216;No triggers set up. Click here to add one now&#8217;.<\/mark><\/p>\n<p>In the dropdowns select<br \/>\n&#8216;doPost&#8217;, &#8216;From spreadsheet&#8217;, and &#8216;On form submit&#8217;, then click on &#8216;Save&#8217;.<\/p>\n<p>Back to the menus: click on Publish &gt; Deploy as web app&#8230;. For <mark>&#8216;Who has access to the app:&#8217;<\/mark><br \/>\nselect <strong>&#8216;Anyone, even anonymous&#8217;<\/strong>.<br \/>\nLeave &#8216;<strong>Execute the app as<\/strong>:&#8217; set to &#8216;Me&#8217; and <strong>Project Version<\/strong> to &#8216;1&#8217;.<br \/>\nClick the &#8216;Deploy&#8217; button.<\/p>\n<p>A dialog should appear announcing &#8216;This project is now deployed as a web app&#8217;. Copy the Current web app URL from the dialog; it should look something like:<\/p>\n<pre><code>https:\/\/script.google.com\/macros\/s\/AKfycbw6RTOxn5OT_BIw9Nl_3KoFSXEQEbiKSZCLyombb1YqkGfRKUSz\/exec<\/code><\/pre>\n<p>\u00bb Click OK.Now go back to <mark>google-sheet.js<\/mark> and replace &#8216;SCRIPT URL GOES HERE&#8217; with the URL copied from the dialog.<\/p>\n<p>Display or refresh the <mark>index.html<\/mark> web page. Enter data into the four fields and click on the &#8216;Send&#8217; button. Within a few seconds that data should appear in your Google sheet.<\/p>\n<p>If your browser is Google Chrome, right-click in the web page and click on Inspect Element &gt; Console. It should show:<\/p>\n<pre><code>Hooray, it worked!\r\n- Object\r\nsuccess\r\n- Objects<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>This blog post shows a few different types of content that&#8217;s supported and styled with Bootstrap. Basic typography, images, and code are all supported. The <a class=\"mh-excerpt-more\" href=\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\" title=\"Step by step setup to send form data to Google Sheets\">[&#8230;]<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":26,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[10],"class_list":["post-24","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-google","tag-google-sheets"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.1.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Step by step setup to send form data to Google Sheets - Cotocus<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Step by step setup to send form data to Google Sheets - Cotocus\" \/>\n<meta property=\"og:description\" content=\"This blog post shows a few different types of content that&#8217;s supported and styled with Bootstrap. Basic typography, images, and code are all supported. The [...]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\" \/>\n<meta property=\"og:site_name\" content=\"Cotocus\" \/>\n<meta property=\"article:published_time\" content=\"2016-09-08T14:32:05+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2019-07-27T10:45:22+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Rajesh Kumar\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Rajesh Kumar\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\"},\"author\":{\"name\":\"Rajesh Kumar\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176\"},\"headline\":\"Step by step setup to send form data to Google Sheets\",\"datePublished\":\"2016-09-08T14:32:05+00:00\",\"dateModified\":\"2019-07-27T10:45:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\"},\"wordCount\":453,\"commentCount\":0,\"image\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg\",\"keywords\":[\"Google Sheets\"],\"articleSection\":[\"Google\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\",\"url\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\",\"name\":\"Step by step setup to send form data to Google Sheets - Cotocus\",\"isPartOf\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg\",\"datePublished\":\"2016-09-08T14:32:05+00:00\",\"dateModified\":\"2019-07-27T10:45:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage\",\"url\":\"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg\",\"contentUrl\":\"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.cotocus.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Step by step setup to send form data to Google Sheets\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/#website\",\"url\":\"https:\/\/www.cotocus.com\/blog\/\",\"name\":\"Cotocus\",\"description\":\"Shaping Tomorrow\u2019s Tech Today\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.cotocus.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176\",\"name\":\"Rajesh Kumar\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2f63a34a9f25e74fb77dd0f38ebba6c3b8b3d14096383d01c679116992212bc6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2f63a34a9f25e74fb77dd0f38ebba6c3b8b3d14096383d01c679116992212bc6?s=96&d=mm&r=g\",\"caption\":\"Rajesh Kumar\"},\"url\":\"https:\/\/www.cotocus.com\/blog\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Step by step setup to send form data to Google Sheets - Cotocus","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:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/","og_locale":"en_US","og_type":"article","og_title":"Step by step setup to send form data to Google Sheets - Cotocus","og_description":"This blog post shows a few different types of content that&#8217;s supported and styled with Bootstrap. Basic typography, images, and code are all supported. The [...]","og_url":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/","og_site_name":"Cotocus","article_published_time":"2016-09-08T14:32:05+00:00","article_modified_time":"2019-07-27T10:45:22+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg","type":"image\/jpeg"}],"author":"Rajesh Kumar","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Rajesh Kumar","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#article","isPartOf":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/"},"author":{"name":"Rajesh Kumar","@id":"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176"},"headline":"Step by step setup to send form data to Google Sheets","datePublished":"2016-09-08T14:32:05+00:00","dateModified":"2019-07-27T10:45:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/"},"wordCount":453,"commentCount":0,"image":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg","keywords":["Google Sheets"],"articleSection":["Google"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/","url":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/","name":"Step by step setup to send form data to Google Sheets - Cotocus","isPartOf":{"@id":"https:\/\/www.cotocus.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage"},"image":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage"},"thumbnailUrl":"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg","datePublished":"2016-09-08T14:32:05+00:00","dateModified":"2019-07-27T10:45:22+00:00","author":{"@id":"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176"},"breadcrumb":{"@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#primaryimage","url":"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg","contentUrl":"https:\/\/www.cotocus.com\/blog\/wp-content\/uploads\/2016\/09\/google-form-to-google-sheet.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/www.cotocus.com\/blog\/step-by-step-setup-to-send-form-data-to-google-sheets\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.cotocus.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Step by step setup to send form data to Google Sheets"}]},{"@type":"WebSite","@id":"https:\/\/www.cotocus.com\/blog\/#website","url":"https:\/\/www.cotocus.com\/blog\/","name":"Cotocus","description":"Shaping Tomorrow\u2019s Tech Today","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.cotocus.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/955147276a7edafd8aa3cafaa0904176","name":"Rajesh Kumar","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.cotocus.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2f63a34a9f25e74fb77dd0f38ebba6c3b8b3d14096383d01c679116992212bc6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2f63a34a9f25e74fb77dd0f38ebba6c3b8b3d14096383d01c679116992212bc6?s=96&d=mm&r=g","caption":"Rajesh Kumar"},"url":"https:\/\/www.cotocus.com\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/posts\/24","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/comments?post=24"}],"version-history":[{"count":5,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions"}],"predecessor-version":[{"id":1166,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/posts\/24\/revisions\/1166"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/media\/26"}],"wp:attachment":[{"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/media?parent=24"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/categories?post=24"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cotocus.com\/blog\/wp-json\/wp\/v2\/tags?post=24"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}