Javascript 如何通过jQuery和Ajax将Google表单数据发布到电子表格

Javascript 如何通过jQuery和Ajax将Google表单数据发布到电子表格,javascript,ajax,forms,google-chrome-extension,google-sheets,Javascript,Ajax,Forms,Google Chrome Extension,Google Sheets,我正在开发一个Chrome扩展,它本质上是一个简单的自定义Google表单,可以发布到响应电子表格中。我获得了以下功能,只成功发送和填充了一次数据,但再也没有了: function postFormToGoogle() { var timeOne = $("#time1hour").val(); var timeTwo = $('#time2hour').val(); var timeThree = $('#time3hour').val(); $.ajax({

我正在开发一个Chrome扩展,它本质上是一个简单的自定义Google表单,可以发布到响应电子表格中。我获得了以下功能,只成功发送和填充了一次数据,但再也没有了:

function postFormToGoogle() {
    var timeOne = $("#time1hour").val();
    var timeTwo = $('#time2hour').val();
    var timeThree = $('#time3hour').val();

    $.ajax({
        url: "https://docs.google.com/forms/d/FORMKEY/formResponse",
        beforeSend: function (xhr) {
          xhr.setRequestHeader('Access-Control-Allow-Origin', 'chrome-extension://EXTENSION_ID');
          xhr.setRequestHeader('Access-Control-Allow-Methods', 'GET, POST, PUT');
        },
        data: { "entry_856586387": timeOne, 
        "entry_244812041": timeTwo, 
        "entry_2138937452": timeThree },
        type: "POST",
        dataType: "xml",
        xhrFields: {
            withCredentials: true
        },
        statusCode: {
            0: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                window.location.replace("ThankYou.html");
            },
            200: function () {
                document.getElementById("message").innerHTML = "Your form has been submitted!";
                console.log("Success");
                window.location.replace("ThankYou.html");
            }
        }
    });
}
我必须包含cors请求头,因为我收到了一个“禁止访问控制允许来源”的警告,该警告阻止了我的请求

作为扩展,我还向manifest.json文件添加了以下权限:

"permissions": [
  "http://docs.google.com",
  "https://docs.google.com",
  "https://*.google.com",
]
在这一点上,我不确定到底是什么阻止了数据发布。可能的迹象是,在提交表单时,我收到了“显示临时标题”警告,服务器等待(TTFB)时间过长,无法响应


我在代码中哪里出错了?(出于某种原因,它确实工作过一次。)有没有其他解决方案可以将自定义表单发布到电子表格中?

我就是这样做的。。。 你可以看到你收到一个CORS错误,但它是有效的。。。数据到达了它应该到达的地方

        function postToGoogle() {
            var field3 = $('#feed').val();

            $.ajax({
            url: "https://docs.google.com/forms/d/[key]/formResponse",
            data: {"entry.347455363": field3},
            type: "POST",
            dataType: "xml",
            statusCode: {
                0: function() {
                    //Success message
                },
                200: function() {
                    //Success Message
                }
            }
        });
        }

查看更多信息

从服务器返回的
数据类型是什么?如果是
html
,则切换到
dataType:“html”
。实际上,来自服务器的响应头
content-type
html
。我相应地切换了“数据类型”,但数据仍然没有填充。但是,我不再收到标题请求的“显示临时标题”警告。请使用
document.getElementById(“消息”).innerText
而不是
document.getElementById(“消息”).innerHTML
:。您是否在内容脚本中实现了跨域XHR?事实证明,使用我共享的代码一切都很好。罪魁祸首实际上是html页面上的
输入值。首先我应该指出,这个表单使用的是Google表单上的Time Duration选项,它有小时、分钟和秒的下拉菜单。数字0-9选项有一位数的值,实际上要求所有值都是两位数(01、02等)才能接受请求。感谢您的输入,gui47.CORS在扩展中不会有问题。我可以用这种方式发送数据,但如果我在google表单中有多个部分,那么如何发送下一部分的值?这会将表单数据发送到我的响应电子表格,但CORS会抛出错误,因此我无法执行验证和成功行为。如果是成功发布和未成功发布,则状态代码为0。