Google Sheets用UrlFetchApp拉取接口返回200但getContentText为undefined
解决Google Sheets脚本拉取接口返回undefined问题
问题原因
问题主要由两个常见原因导致:
- 重复调用
UrlFetchApp.fetch()发起3次相同请求,短时间内高频请求触发接口限流规则,第一次返回200正常响应,后续请求被拦截返回空内容 - 接口返回的JSON数据体量较大,直接将完整内容输出到Apps Script控制台时,可能因为日志长度限制被截断,显示为undefined,不代表实际没有获取到内容
修正后的代码
function myFunction() { // 配置请求参数 const options = { 'muteHttpExceptions': true, 'headers': { 'Accept': 'application/json' } }; // 仅发起一次请求,复用响应对象 const response = UrlFetchApp.fetch("https://api.llama.fi/charts/Ethereum", options); // 从同一个响应对象读取所有属性 const responseCode = response.getResponseCode(); // 明确指定UTF-8编码解析响应内容 const contentText = response.getContentText("UTF-8"); // 验证内容获取状态,避免直接打印全量内容触发日志限制 console.log("响应状态码:", responseCode); console.log("返回内容总长度:", contentText.length); console.log("返回内容前100字符:", contentText.slice(0, 100)); // 如需处理JSON数据,可直接解析 const jsonData = JSON.parse(contentText); console.log("第一条数据内容:", JSON.stringify(jsonData[0])); }
验证方法
运行代码后查看执行日志:
- 若返回内容长度大于0,说明已经正常拿到响应数据
- 若需要将数据写入Google Sheets,可直接遍历解析后的
jsonData数组写入对应单元格即可,无需打印全量内容
内容的提问来源于stack exchange,提问作者Dominik
相关产品推荐
相关产品推荐

