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

Office Script调用外部API遇Fetch错误:Bearer授权令牌是否兼容?

Excel Office Script 调用带Bearer Token的API问题解答

1. Office Script是否支持Bearer Token?

完全支持。Office Script基于TypeScript/JavaScript,使用标准的fetch API发起网络请求,和前端JavaScript的请求逻辑一致,可直接在请求头中携带Authorization: Bearer <token>完成授权,不需要改用VBA。

2. TypeError: Failed to fetch的常见原因

这个是fetch API的通用网络错误,不一定由代码结构或接口定义直接导致,常见触发场景包括:

  • 跨域(CORS)限制:目标API未配置允许Office Script所在的微软办公服务域名发起跨域请求,会直接触发该错误。
  • 请求头格式错误:比如Authorization头拼写错误、Bearer与令牌之间缺少空格,或者令牌本身格式不符合API要求。
  • 令牌无效/权限不足:Bearer Token过期、签名错误,或没有访问目标接口的权限,API返回4xx错误但未被正确捕获时,也会抛出该通用错误。
  • API端点问题:目标API地址错误、服务不可用,或使用了HTTP协议(Office Script仅支持HTTPS请求)。
  • 租户环境限制:企业/教育版Office 365租户可能有管理员配置的网络规则,禁止Office Script调用外部API。

3. 排查与修复建议

校验请求头与代码结构

确保请求头格式正确,以下是标准的示例代码:

async function main(workbook: ExcelScript.Workbook) {
  const bearerToken = "你的有效Bearer令牌";
  const targetApiUrl = "https://目标API地址";

  try {
    const response = await fetch(targetApiUrl, {
      method: "GET",
      headers: {
        "Authorization": `Bearer ${bearerToken}`,
        "Content-Type": "application/json" // 若API要求则添加
      }
    });

    // 主动校验响应状态,避免隐藏真实错误
    if (!response.ok) {
      throw new Error(`API返回错误: ${response.status} - ${response.statusText}`);
    }

    const responseData = await response.json();
    // 后续处理数据,例如写入Excel单元格
    console.log("请求成功:", responseData);
  } catch (error) {
    console.error("请求失败详情:", error);
  }
}

验证令牌与API可用性

先用Postman或curl直接测试API+令牌的有效性,排除令牌或API本身的问题:

curl -H "Authorization: Bearer 你的令牌" https://目标API地址

确认CORS配置

如果是跨域问题,需要API服务端配置允许https://*.office.com(或更具体的Office Script域名)发起跨域请求,同时允许传递Authorization请求头。

检查租户权限

若使用企业/教育版Office,联系管理员确认是否开启了Office Script调用外部API的权限,是否有防火墙、代理等限制。


内容的提问来源于stack exchange,提问作者Jose Luis Risueño

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 03:18:18