【问题标题】:Google Apps Script/Sheet Returns Bad Request 400Google Apps 脚本/工作表返回错误请求 400
【发布时间】:2016-04-20 11:20:08
【问题描述】:

我在 Google 表格上运行了一个相当简单的脚本。

脚本接受 webhook POST 并将 webhook 的内容作为电子表格中的新行写入。

脚本按预期运行,并在接收数据时写入新行。

但是,我发送 webhook 的应用程序由于某种原因收到了“错误请求 400”错误。即使脚本有效并且它完成了它应该做的事情。

这是我正在使用的脚本的fiddle

如果我手动调用它,我会收到 200 响应:

var response = UrlFetchApp.fetch("https://script.google.com/macros/s/AKfycbx5ubu78yi5sj2D9z-2m3Wqog604wY1ENwP3pZstnB95Mc5_N3b/exec", options);

这是一个landing page,上面有一个表格。当您提交表单时,表单数据会通过 webhook 推送到 Google 表格。 (点击“Click Me To Test This Script”查看表单,如果提交,您将看到实际工作表。)

【问题讨论】:

  • 显示脚本。您可能没有返回 contentService
  • 嗨@ZigMandel,整个脚本都包含在上面的小提琴中。我确实在脚本末尾有 contentService。
  • 嗯。你假设你的异常总是字符串,但我怀疑这是问题,但检查一下。

标签: google-apps-script google-sheets google-spreadsheet-api


【解决方案1】:

您可以通过使用 UrlFetchApp 类的 fetch(url, params) 方法并将 muteHttpExceptions 选项设置为 true 来解决此问题。下面是一个发布请求的示例。

var options = {
    'method': 'post',
    'contentType': 'application/json',
    'payload': JSON.stringify(ObjectToSend),
    'muteHttpExceptions':true,
};

var noMancoResponse = UrlFetchApp.fetch('URL', options);
console.log("Status Code: " + String(noMancoResponse.getResponseCode()));

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    我遇到了同样的问题,在多次重新发送 HTTP 请求后,我意识到这是由于 Content Security Policy 标头造成的。如果它是由服务器设置的,而你的源不满足它的规则,那么浏览器将显示错误 400。

    如果 UrlFetchApp 中有一个选项可以抑制此错误,那就太好了。

    我还没有找到任何解决方案来解决它。如果您这样做,请告诉我。

    【讨论】:

      猜你喜欢
      • 2012-09-07
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2019-07-28
      • 2019-07-11
      • 2015-04-06
      相关资源
      最近更新 更多