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

在Google表格菜单调用Google App Script访问Binance API时出现403错误

解决Google Sheets菜单调用Binance API返回403的问题

这个问题的核心原因是脚本编辑器运行环境和Spreadsheet菜单触发环境的请求头存在差异,Binance的API服务器会拦截缺少合法User-Agent的请求,返回403禁止访问。

当你在脚本编辑器里直接运行函数时,UrlFetchApp使用的默认请求头可能被Binance的API识别为合法请求;但通过表格菜单触发时,请求的默认User-Agent会有所不同,被API判定为非授权的自动化请求,从而被拒绝。

解决方案:添加自定义请求头

你只需要在UrlFetchApp.fetch的配置选项中添加一个模拟浏览器的User-Agent头,就能让Binance API接受你的请求。修改后的函数代码如下:

function getCoinUSDValueBinance(){
  var url = 'https://api.binance.com/api/v3/ticker/price'
  Logger.log('URL set');
  // 添加自定义请求头,模拟浏览器请求
  var options = {
    'muteHttpExceptions': true,
    'headers': {
      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
    }
  };
  // 调用API获取数据
  var response = UrlFetchApp.fetch(url, options);
  // 解析响应为对象
  var dataResponse = JSON.parse(response.getContentText());
  Logger.log('响应状态码: ' + response.getResponseCode());
  Logger.log('数据示例: ' + JSON.stringify(dataResponse[0]));
  /* 在这里处理返回的数据 */
}

额外说明

  1. 为什么这个方法有效?
    Binance的API会对请求的User-Agent进行校验,避免无标识的自动化请求。添加一个标准的浏览器User-Agent,会让你的请求看起来像是来自正常的浏览器访问,从而绕过这个拦截。

  2. 可以使用其他User-Agent吗?
    当然,你可以使用任何主流浏览器的User-Agent字符串,比如Firefox、Safari的都可以,只要格式符合标准就行。

  3. 后续测试建议
    修改完代码后,先在脚本编辑器里运行一次确认正常,再通过表格的API Menu菜单调用,查看Logger里的响应状态码是否变成200,数据是否正常返回。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 07:26:54