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

Google Apps Script调用内部API报Bad Request错误的排查与解决建议

内部API调用问题排查与解决方案建议

问题重现

调用内部API时出现错误:

Exception: Bad request: https://... .

当前使用的Google Apps Script代码:

function nomina() {

  var url = 'https://internal-api.company.com/app-api/master/api/ssff/users';

  var headers= {
  'Authorization' : 'Bearer token',
  'Accept': 'application/json',
  'contentType': 'application/json'

  }

  var options = 
  {
  'method' : 'GET',
  'headers' : headers
  }

  var response = UrlFetchApp.fetch(url,options);
   jsonParse=(JSON.parse(response))  

}

排查与解决建议

  • 网络环境不匹配:Postman运行在你本地的VPN网络内,但Google Apps Script的服务器属于Google云端,不在你的企业VPN覆盖范围。如果内部API仅允许VPN内网访问,GAS根本无法建立连接,这是最核心的原因。
  • Token有效性问题:确认代码中的token是当日更新的有效值,别写死旧Token;同时检查Bearer 后面是否有空格,格式是否和Postman中完全一致。
  • 请求头参数位置错误:contentType属于请求配置项,不该放在headers里,正确的写法是移到options对象中(GET请求甚至可以省略这个参数),错误的位置会导致请求格式异常触发400错误:
    var options = {
      'method': 'GET',
      'headers': {
        'Authorization': 'Bearer 你的有效Token',
        'Accept': 'application/json'
      },
      'contentType': 'application/json'
    }
    
  • 请求参数遗漏:对比Postman的请求详情,检查是否有其他必填请求头(比如自定义的内部标识头、User-Agent)或URL参数,Postman可能自动携带了这些内容,但GAS里没配置。
  • API访问限制:部分内部API会校验请求IP或用户代理,GAS的请求IP是Google公共IP,大概率不在API的白名单内;或者API需要特定权限,Postman使用的账号有权限,但GAS运行的Google账号无访问权限。
  • 添加调试日志定位:在代码中补充日志,获取更详细的错误信息:
    Logger.log('请求配置: ' + JSON.stringify(options));
    try {
      var response = UrlFetchApp.fetch(url, options);
      Logger.log('响应状态码: ' + response.getResponseCode());
      Logger.log('响应内容: ' + response.getContentText());
    } catch (e) {
      Logger.log('错误详情: ' + e.toString());
    }
    
    通过日志可以明确是Token无效(401)、权限/IP限制(403)还是请求格式错误(400)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:37:12