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

使用UrlFetchApp调用API至谷歌表格时遇TypeError问题求助

解决UrlFetchApp.fetch().then is not a function错误

错误原因

Google Apps Script(GAS)中的UrlFetchApp.fetch()是同步执行的方法,它直接返回HTTPResponse对象,并非JavaScript Promise。所以你不能用Promise的.then()、.catch()链式调用,这就是触发TypeError的核心原因。

修正方案

改用同步代码的写法,用try-catch处理错误,直接调用GAS提供的响应对象方法获取内容:

function myFunction() {
  var myHeaders = {
    "Accept": "application/JSON, text/javascript, */*;q=0.01"
  }; 

  var requestOptions = {
    method: 'GET',
    headers: myHeaders,
    followRedirects: true // 注意GAS中重定向参数为followRedirects,值为布尔型
  };

  try {
    // 同步获取响应
    var response = UrlFetchApp.fetch("http://vixcentral.com/ajax_historical?n1=2023-10-17", requestOptions);
    // 获取响应文本内容
    var result = response.getContentText();
    // 输出日志(GAS中Logger.log或console.log均可,前者兼容旧编辑器)
    Logger.log(result);
  } catch (error) {
    // 捕获并输出错误
    Logger.log('error: ' + error.toString());
  }
}

关键修改点

  • 移除.then()和.catch()链式调用,改用try-catch捕获同步代码的异常
  • 用response.getContentText()替代response.text():GAS的HTTPResponse对象提供的是getContentText()方法来获取响应文本
  • 修正重定向参数:GAS中UrlFetch的重定向配置是followRedirects(布尔值),而非你原代码中的redirect: 'follow',原参数会被忽略
  • 日志输出:GAS中推荐用Logger.log(),新版编辑器也支持console.log(),根据你的编辑器版本选择即可

如果需要将响应解析为JSON对象,可在获取result后添加:

var jsonData = JSON.parse(result);
Logger.log(jsonData);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:13:19