【问题标题】:Google Apps Script: 403 error for UrlFetchAppGoogle Apps 脚本:UrlFetchApp 出现 403 错误
【发布时间】:2021-04-03 23:40:58
【问题描述】:

我正在使用谷歌应用脚​​本

var rss = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=exclude&start=0&count=100&output=atom"
var r = UrlFetchApp.fetch(rss).getContentText()

但有一次,我执行失败,这就是响应。这是大约一半的时间。

Exception: Request failed for https://www.sec.gov returned code 403. Truncated server response: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w... (use muteHttpExceptions option to examine full response)

不知道为什么会发生以及如何解决它。

【问题讨论】:

  • 有一个apps脚本可以通过odbc here进行连接
  • 虽然我不确定这是否是您问题的直接解决方案,但我提出了一个答案。你能确认一下吗?如果这不能解决您的问题,我深表歉意。

标签: google-apps-script urlfetch


【解决方案1】:

虽然很遗憾,我无法从but once a while, I get a failed execution and this is the response.复制您的情况,例如,重试请求如何?

示例脚本:

var res = null;
var maxRetries = 5;
var rss = "https://www.sec.gov/cgi-bin/browse-edgar?action=getcurrent&CIK=&type=8-k&company=&dateb=&owner=exclude&start=0&count=100&output=atom";
for (var i = 0; i < maxRetries; i++) {
  res = UrlFetchApp.fetch(rss, {muteHttpExceptions: true});
  if (res.getResponseCode() == 200) break;
  res = null;
  Utilities.sleep(5000);
}
if (!res) throw new Error("Values cannot be retrieved.");

// do something.
var value = res.getContentText();
  • 在此示例脚本中,当状态码不是200 时,5 秒后重试请求。最大重试次数为 5 次。
  • 请根据您的实际情况修改maxRetriesUtilities.sleep(5000)

参考:

【讨论】:

    【解决方案2】:

    当您的请求率超过“合理使用”定义(目前为每秒 10 个请求)时,可能会发生这种情况。

    https://www.sec.gov/os/accessing-edgar-data

    您可以通过检查响应正文来确认是否是这种情况。

    【讨论】:

      猜你喜欢
      • 2011-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多