You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Google Apps Script的UrlFetchApp.fetchAll()未返回文档所述的HTTPResponse[]?

问题解答
  • 你看到的日志现象是Logger的自动序列化行为,并非UrlFetchApp.fetchAll()返回了非HTTPResponse对象。

Google Apps Script的Logger.log()在输出对象时,会自动对HTTPResponse对象进行序列化展示——它会默认提取响应的内容(比如JSON数据)来输出,而不是显示对象的类结构或属性。这就导致你误以为返回的是原始JSON数据,实际上responses数组里的元素依然是标准的HTTPResponse对象。

  • 验证方法:修改代码,添加类型检查或调用HTTPResponse的专属方法来确认:
function test() {
  let oneRequest = {
      'url': 'https://rest/of/url/redacted',
      'method': 'get',
      'contentType': 'application/json',
      'headers': {
        'x-okapi-tenant': 'string value redacted',
        'x-okapi-token': 'string value redacted'
      },
      'muteHttpExceptions': true
    };
  let requests = [oneRequest];
  let responses = UrlFetchApp.fetchAll(requests);
  
  // 验证返回对象类型
  Logger.log(typeof responses[0]); // 会输出 'object'
  // 调用HTTPResponse专属方法,比如获取响应状态码
  Logger.log(responses[0].getResponseCode()); // 会返回HTTP状态码如200
  // 手动获取内容,和日志里的内容对比
  Logger.log(JSON.parse(responses[0].getContentText()));
}

运行这段代码后,你会发现responses[0].getResponseCode()能正常执行,说明它确实是HTTPResponse对象——日志里的JSON内容只是Logger为了可读性自动展示的对象内容,而非返回值本身的类型改变。

内容的提问来源于stack exchange,提问作者mhucka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 09:12:48