编写谷歌文档表单提交脚本

我正在尝试创建一个解析页面的书签,并通过我定义的表单将结果发送到googledocs电子表格。

脚本的相关内容是:

var form = document.createElement("form"); form.action = "http://spreadsheets.google.com/formResponse?formkey=Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq"; form.method = "POST"; form.id="ss-form"; form.innerHTML = ["", "", "", ].join(""); form.submit(); alert(form.innerHTML); 

//返回:

没有任何东西通过书签保存到表单 – 在我的书签的代码中捕获谷歌的响应的任何方式? (fwiw,我通过jQueryify注入了jQuery)

编辑:

Firebug的Net面板没有听到由bookmarklet触发的任何活动 – 我如何通过goolgle的viewform方法而不是formresponse来处理这个问题

我想提交的表格位于:

http://spreadsheets.google.com/viewform?hl=en&formkey=dFd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA

我怎样才能将脚本值注入该表单然后再次提交…通过在被解析的页面上触发的bookmarklet中的脚本?

如果你已经在使用jquery,请尝试通过ajax($ .ajax)提交表单。 您可以设置成功function,当谷歌发回他们的回复时将调用该function。

或者你应该能够使用firebug来查看google发回的响应。

具体来说,我认为你可以尝试以下内容:

 $.ajax({ url: "http://spreadsheets.google.com/formResponse", data: { formkey: "Fd0SHgwQ3YwSFd5UHZpM1QxMlNOdlE6MA&ifq", "entry.0.single": orderDate, "entry.2.single": email, "entry.3.single": customerID }, type: "POST", dataType: "xml", success: function(data, textStatus, XMLHttpRequest) { console.log("success"); console.log(data); }, error: function(XMLHttpRequest, textStatus, errorThrown) { console.log("error"); console.log(textStatus); }, }) 

我刚刚做了这样的事情。 这是我的过程的细分。

我需要保留不同网页的引用列表,并为每个引用添加一些信息。

我的bookmarklet会动态生成一个google表单 (我刚查看过我已创建的真正google表单的来源),它会自动填充当前的url,页面标题和当前选中的文本,而不是表格将被提交

由于我需要手动添加信息,因此我故意不包含至少一个必填字段,因此我收到了带有错误消息的谷歌表单(但是已经填写了url,标题和引号)。 现在我可以手动添加我需要的所有其他信息并提交表单。

如果书签填充了所有必填字段,您将收到谷歌表单成功回复“谢谢!您的回复已被记录。”

我使用以下站点生成一个使用jQuery的书签: http : //benalman.com/code/test/jquery-run-code-bookmarklet/ (我正在使用jQuery来删除其他信息和内容来自网页)

为了能够正确使用该网站,您将不得不逃避单线程 html(您可以使用此转义工具 )

所需的步骤是:

  1. 创建一个谷歌表单/电子表格
  2. 查看表单的来源并复制您希望书签填充的字段
  3. 转义您的html并使用它来编写填充信息的脚本,此站点将为您创建书签

所以在我的情况下:

1.我创建了一个表单,其中包含一个用于保存url的文本字段,另一个用于保存网页标题的文本字段,一个用于保存引号的段落文本(所选文本)。 表单还包括我手动填写的一些其他必填字段。

2.我准备了以下html:

     

(entry_0 – url,entry_3 – 页面标题,entry_2 – 引用)

3.将它放在一行并逃脱之后。 我使用了以下脚本:

 frm = $(unescape('%3Cform%20action%3D%22https%3A//spreadsheets.google.com/spreadsheet/formResponse%3Fformkey%3DXYZXYZXYZXYZXYZXYZXYZ%26amp%3Bifq%22%20method%3D%22POST%22%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.0.single%22%20value%3D%22%22%20id%3D%22entry_0%22%20/%3E%0A%3Cinput%20type%3D%22text%22%20name%3D%22entry.3.single%22%20value%3D%22%22%20id%3D%22entry_3%22%20/%3E%0A%3Ctextarea%20name%3D%22entry.2.single%22%20id%3D%22entry_2%22%3E%3C/textarea%3E%0A%3Cinput%20type%3D%22submit%22%20name%3D%22submit%22%20value%3D%22submit%22%20/%3E%0A%3C/form%3E')); $(frm).children('#entry_0').attr('value',location.href); $(frm).children('#entry_3').attr('value',$('title')[0].innerHTML); $(frm).children('#entry_2').html(window.getSelection().toString()); $(frm).children('input[type=submit]').click() 

此方法已使用chrome进行测试。 祝好运!

对于将来的任何人,请确保您发布的url最后有&ifq,我发现这很容易修复我的大部分问题,返回405。

截至今天,我无法得到正确的工作答案。 我相信谷歌改变了一些事情。

我可以通过HTTP POST发送到https://docs.google.com/forms/d//formResponse

使用表单数据作为entry.645136839= ,其中从表单字段获取大数字。

我没有完整的答案,但我已经能够使用Curl使其工作:

 curl http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ&ifq --data entry.0.single=eric --data entry.1.single=pugh 

此外,我可以使用原型通过Ajax工作,但仅限于Safari。

我也得到了Firefox中不允许的相同405方法。 这是我的脚本:

 function vote_for_synonym(word1, word2){ word1 = encodeURIComponent(word1); word2 = encodeURIComponent(word2); $req = new Ajax.Request("http://spreadsheets.google.com/formResponse?formkey=dFpVLTVFY2t5dWdoNTZpNERwWDRxX2c6MQ", { method: 'post', contentType: 'application/x-www-form-urlencoded', onCreate: function(){ Element.show('systemWorking'); }, onSuccess: function() { Element.show('thanks'); Element.hide('systemWorking') }, onFailure: function() { Element.show('error'); } }); 

}

此外,我的onFailure永远不会被调用,只是onSuccess。

我以为我有一些花絮要添加到这个,但他们结果是没有解决问题。

  • 绝对使用输入’name’(不是id)
  • 其中一个参数是’ifq’,不确定如何将它与’formkey’捆绑起来(字符串只是一个字符串,对吗?)
  • 要完全模拟Google表单,请添加以下附加字段:pageNumber = 0; backupCache = ”; 提交=提交

虽然我得到了相同的’405 Method not allowed’错误…

从您的示例代码 – 我改变了一些事情 – 首先是表单提交结束点/否和ifq需要。 谷歌可能已经更新了。 查看表单来源并使用表单操作URL。 其次,关键的是你的表单输入类型不包括id(第一个除外)。 有了这些东西 – 表格成功发布。

在此处输入图像描述