使用 AJAX 将数据发布到 Google 表单

Bil*_*ter 1 javascript ajax google-docs

我试图将数据从 AJAX 发布到 Google 表单,但即使它报告成功且 statusCode 为 0,数据也从未出现在表单中:

var dat={ "entry.529474552" :"data1", "entry.1066559787": "name1"};
postToGoogle("1FAIpQLSf4w1OQGsIncaiqXlmfAl4jYSt-e4Zx3xVJa7Weob4LnQbRZQ",dat);

function postToGoogle(id, dat) {
    $.ajax({
        beforeSend: function (xhr) {
            xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID');
            xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
            },
        url: "https://docs.google.com/forms/d/e/"+id+"/formResponse",
        data: dat, 
        type: "POST",  
        dataType: "xml",
        xhrFields: {  withCredentials: true },
        statusCode: {
            0:   function() {  console.log("OK") },
            200: function() {  console.log("error") },
            }
        });
    }
Run Code Online (Sandbox Code Playgroud)

它会生成 CORS 错误,但据说 POST 无论如何都应该通过。

小智 11

对于那些希望在 2019 年 4 月之前执行此操作的人

我今天正在研究这个。目前的答案如下:

Google 表单中的每个字段都有一个唯一的 ID。为了检索它,通过填写您希望以编程方式提交的所有相关表单字段来获取预先填写的链接

注意:为了确保 URL 可以不受限制地访问,您还需要仅禁用对您的域的限制(适用于 GSuite 付费用户)

谷歌表单界面

然后,复制链接并粘贴到您的浏览器中。URL 的基本格式如下:

https://docs.google.com/forms/d/e/[FORMID]/formResponse

每个参数都是一个键/值对类型:entry.XXXXXX=value

预填链接将为您提供每个相关字段的 XXXXX 值

请求必须使用以下标头:

方法:获取

内容类型:应用程序/x-www-form-urlencoded

最终的请求看起来像这样

https://docs.google.com/forms/d/e/123332233bsj333/formResponse?entry.123456=value1&entry.2333442=value2&submit=Submit

不要忘记在您的请求末尾附加 submit=Submit !

  • 获取 GET 请求的 CORS 错误,(原因:缺少 CORS 标头“Access-Control-Allow-Origin”),有什么办法可以解决这个问题? (2认同)