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

25

我正在开发一个Web应用程序,在其中我希望允许用户将数据推送到她自己的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无法加载https://spreadsheets.google.com/feeds/... 源..mysite..未被Access-Control-Allow-Origin允许。

感谢您查看此问题。

2个回答

43

通过屏幕截图逐步说明

在阅读了Martin Hawskey关于将数据从HTML表单发送到Google电子表格的良好介绍后,我们发现其中存在一些差距/假设,因此我们决定编写详细/全面的教程,并提供逐步说明,这对一些人很有用:

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

该脚本会将通过HTTP POST发送的任何数据保存在Google电子表格中,并且可选地将内容转发到电子邮件地址(如果您想要被通知新数据,这很有用)。

HTML表单:

联系表单

结果(电子表格中的行):

电子表格中的行

希望对他人有所帮助。


26

我大约8个月前开始研究这个问题。我偶然发现了Martin Hawskey撰写的一篇博客文章。我按照这里的指南进行操作,成功地设置了一个HTML表单,可以将表单上的数据发布到电子表格中。

实际上,您可以在电子表格中设置一个已发布的网络应用程序来接收数据。为了解决CORS问题,您需要将其定位到页面上的一个隐藏iframe。我可以复制本文中的代码,但是代码量比较大。

演示

我提供一些建议,这是我在开始研究时希望得到的。如果可以的话,请尝试设置一个可以使用的PHP服务器。发布数据会更加容易和灵活。我现在在工作中虔诚地使用Zend GData,希望我早点发现它 :) 编辑 Marting Hawskey已更新此内容,支持无需使用隐藏iframe的AJAX提交。在此处查看

我根据您的建议制定了解决方案。谢谢。 - Martin Dimitrov
3
更新了此处提到的示例,使其允许真正的ajax提交,例如不使用隐藏的iframe。请参见http://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/。 - mhawksey
1
我仍然收到CORS错误,而且在你提供的新@mhawksey帖子中,我看不到任何相关内容来解决它。 - Redoman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接