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

在Google Apps Script中使用Metabase API会话令牌时出现401未授权错误

解决Google Apps Script中Metabase会话令牌401未授权问题

你遇到的核心问题是请求选项的结构格式错误,导致Metabase服务器无法正确识别你的会话令牌。让我拆解问题并给出修复方案:

问题根源分析

在Google Apps Script的UrlFetchApp.fetch()方法中,请求参数的结构有明确规范:自定义HTTP请求头必须嵌套在headers子对象中,而不是直接和method、contentType等属性平级。你的代码里把X-Metabase-Session直接放在了顶层选项里,这会导致这个关键的授权头没有被正确发送到Metabase,自然会返回401未授权错误。

而你用curl测试正常,是因为curl命令里正确指定了请求头的层级,没有结构上的问题。

修正后的代码

把X-Metabase-Session移到嵌套的headers对象中,调整后的代码如下:

var options = {
  "method": "get",
  "contentType": "application/json",
  "headers": {
    "X-Metabase-Session": "22222222-cccc-4444-9999-333333333333"
  },
  "muteHttpExceptions": true
};
Logger.log(options);
var response = UrlFetchApp.fetch(url, options);

额外检查点(如果修正后仍有问题)

  • 确认会话令牌的有效性:Metabase会话令牌有有效期,如果你是提前手动获取的令牌,可能在脚本执行时已经过期,建议在脚本中动态调用登录接口获取最新令牌后再发起请求。
  • 验证请求URL一致性:确保脚本中使用的url和curl测试时的URL完全一致,没有拼写错误或环境差异(比如Metabase服务器的访问地址是否在Google Apps Script的可访问范围内)。
  • 检查Metabase访问控制策略:如果Metabase设置了IP白名单或特定的访问限制,需要确认Google服务器的IP是否被允许访问。

内容的提问来源于stack exchange,提问作者Domarys Corrêa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 23:07:42