AJAX后,以谷歌电子表格(AJAX post to google spreadsheet)

2019-06-23 09:52发布

我试图表单数据发布到谷歌电子表格。 目前,如果表单有效,那么将发生以下情况:

if (validateForm === true) {
        $.ajax({
            type: 'post',
            url: 'https://docs.google.com/spreadsheet/ccc?key=0AlwuDjMUxwhqdGp1WU1KQ0FoUGZpbFRuUDRzRkszc3c',
            data: $("#workPLZ").serialize(),
            success: alert($("#workPLZ").serialize())
        });
    }
    else {}

我用成功的设置来验证我的表单数据被正确序列化(它是),它是成功的。 然而,我的谷歌电子表格不更新(没有数据正在经历)。 我在这里使用的示例代码,改变的doGet到的doPost( http://mashe.hawksey.info/2011/10/google-spreadsheets-as-a-database-insert-with-apps-script-form-postget-submit-方法/ ),并取得了谷歌的电子表格可公开获得的(和可编辑的任何人)。 我跟着指示,在代码复制到googledocs,然后运行安装程序两次(第一次请求批准,第二次我跑了,我没有注意到任何事情发生)。 谁能帮我? 我觉得我超近。

Answer 1:

好吧,我想出了一个解决方案。 被告知跨域AJAX的问题后,我决定继续前进,遵循一个“T”,由文章作者所使用的方法在http://mashe.hawksey.info/2011/10/google-spreadsheets-as -a-数据库插入与-应用程序-脚本外形postget提交法/ 。

要发布数据到您的谷歌电子表格,首先进行电子表格和改变工作表名称(左下角)来的数据。 接下来,打开脚本编辑器(工具==>脚本编辑器),在电子表格并粘贴在文章的脚本。 改变 “的doGet(E)” 到 “的doPost(E)”。 运行安装脚本的两倍。 第一次它会要求运行(授予它)权限,那么你第二次选择要运行它,你不会得到它运行任何弹出指示(我跑我的编辑器,因此说上面的“运行安装程序”代码输入区域,但仅此而已)。 之后,选择在脚本编辑器“发布”,然后选择“发布为服务”。 单击“允许任何人来调用这个服务”单选按钮,“允许匿名访问”复选框。 复制该网址(重要!),然后单击“启用服务”。 这是“困难的部分”。

在你的HTML表单,您所提交的每个元素都必须有一个“name”属性(比如)这个名字是如何将数据发送 - 每个条目连接到它的名字。 确保对每一件你收集表单数据的,它有一个名字,这个名字就是输入为您的电子表格的列(这是它如何将数据从您的形式映射到电子表格)。 为了您的形式,设置张贴的方法和行动,你的“发布为服务” URL(这我告诉你保存)所示:

<form id="formID" method="post" action="URL" target="hidden_iframe">

我包括表格ID,所以我可以选择的形式,并用jQuery提交。 在你的HTML,上面的表格前,添加隐藏的iframe:

<iframe name="hidden_iframe" id="hidden_iframe" style="display:none;"></iframe>

设置某种形式的验证(不是必须的,但如果每场没有填写你会得到您的电子表格数据不全),如果被确认有它称之为一个jQuery .submit()。 例如:

    if (formValidation === true){
           $("#formID").submit();
    }
    else {}

不过就是这样。 祝好运!



Answer 2:

由于谷歌Apps脚本现在有一个contentService的 ,可以返回JSON响应有可能使Ajax请求,而不使用隐藏的iframe。 由于原来的解决方案的文章作者我已经发表了这个技术,它包括一个Ajax例子的更新版本

用户还可能要考虑切换到这个新版本,因为它利用了其它新的谷歌Apps脚本服务,特别是:

  • 使用的LockService防止并发写访问; 和
  • 切换到新PropertiesService存储脚本数据


Answer 3:

我会告诉你最简单的方式将数据发送到谷歌的电子表格不AJAX没有谷歌的形式,或PHP ...只是谷歌电子表格和HTML甚至是Android系统。

  1. 创建一个新的谷歌电子表格。
  2. 打开工具/脚本编辑器

你只需要在编辑器中的HTML和Code.gs两个文件:

举个例子:

  1. 转到文件/新的HTML名称文件=的Index.html:

     <!DOCTYPE html> <html> <head> <base target="_top"> <script> function Enviar(){ var txt1=document.getElementById("txt1").value; var txt2=document.getElementById("txt2").value; var txt3=document.getElementById("txt3").value; google.script.run.doSomething(txt1,txt2,txt3); } </script> </head> <body> Prueba de Envio de informacion<br> <input type="text" value="EMAIL" name="txt1" id="txt1"><br> <input type="text" value="CEDULA" name="txt2" id="txt2"><br> <input type="text" value="NOMBRE" name="txt3" id="txt3"><BR> <Button name="btn1" onClick="Enviar();">Enviar</button> </body> </html> 

有3场派:EMAIL,CEDULA,NOMBRE

  1. 在同一ScriptEditor去去Code.gs文件类型:

     function doGet() { return HtmlService.createHtmlOutputFromFile('Index') .setSandboxMode(HtmlService.SandboxMode.IFRAME); } function doSomething(s1,s2,s3){ Logger.log('datos:'+s1+" "+s2+" "+s3); var enlace="https://docs.google.com/spreadsheets/d/ 1XuAXmUeGz2Ffr11R8YZNihLE_HSck9Hf_mRtFSXjWGw/edit"; var ss = SpreadsheetApp.getActiveSpreadsheet(); var ss = SpreadsheetApp.openByUrl(enlace); var sheet = ss.getSheets()[0]; sheet.appendRow([s1, s2, s3]); Logger.log(ss.getName()); } 

其中,缠绕是你的电子表格网址

  1. 作为应用发布应用,让你的新脚本的URL。 现在你可以使用这个网址为您的HTML应用程序或Android应用程序中嵌入。 而已。 用户将被要求允许打开这个脚本


文章来源: AJAX post to google spreadsheet