通过在浏览器中运行的JavaScript将数据推送到Google电子表格

时间:2013-11-10 08:34:34

标签: javascript jsonp google-sheets cors google-spreadsheet-api

我正在开发一个网络应用程序,我希望允许用户将数据推送到自己的Google电子表格中。

首先我尝试使用Google APIs Client Library for JavaScript,但它似乎没有涵盖电子表格API(https://developers.google.com/apis-explorer/#p/)。

然后我决定直接使用Google Spreadsheets API version 3.0。我设法使用jQueryJSONP

检索用户的电子表格
$.ajax({
  url: 'https://spreadsheets.google.com/feeds/spreadsheets/private/full?alt=json-in-script&access_token=' + access_token,
  dataType: 'JSONP',
  success: function(data){
    // use the spreadsheets
  }
});

在同一方法中,我从用户选择的电子表格中检索工作表。然后我必须POST数据到选定的工作表。问题就出现了:使用JSONP无法做到这一点。 Google服务器似乎不支持CORS。我在浏览器中收到以下错误:

XMLHttpRequest cannot load https://spreadsheets.google.com/feeds/... Origin ..mysite.. is not allowed by Access-Control-Allow-Origin.

感谢您对此进行调查。

2 个答案:

答案 0 :(得分:28)

带有屏幕截图的

分步说明

阅读 Martin Hawskey 介绍(将数据从HTML表单发送到Google电子表格)并看到一些差距/假设,我们决定编写 详细/全面的教程,分步说明 少数人认为有用:

  

https://github.com/dwyl/html-form-send-email-via-google-script-without-server

该脚本会将通过HTTP POST发送的所有数据保存在Google电子表格中,可选将内容转发到电子邮件地址。 (如果您希望收到有关新数据的通知,则非常有用)

HTML表格:

contact form

结果(表格中的行):

row in sheet

希望它能帮助别人。

答案 1 :(得分:22)

我也在考虑这个问题大约8个月。我偶然发现了a blog post written by Martin Hawskey。我按照这里的指南进行操作,然后我就能够在电子表格中设置HTML表单。

有效地,您可以在电子表格中设置可以接收数据的已发布网络应用。要解决CORS问题,您需要在页面上定位隐藏的iframe。我会复制这篇文章中的代码,但有一点点。

<强>样本

我会提供一些建议,我希望在我开始研究时给予我这些建议。如果你可以...尝试并设置一个你可以使用的PHP服务器。发布数据更加容易和灵活。我现在在工作中虔诚地使用Zend GData并希望我早点找到它:)

修改

Marting Hawskey对此进行了更新,以支持AJAX提交,而无需使用隐藏的iframe。 See here