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

如何在Script Lab中使用Fetch调用API?解决Request未定义错误

这问题我之前帮人排查过,核心原因是你当前Script Lab运行的Office环境可能还在使用IE11的渲染引擎——而IE11本身并不支持现代浏览器的Fetch API(包括Headers、Request和fetch函数),所以才会抛出ReferenceError。下面是几种可行的解决方法:

解决步骤

1. 引入Fetch API Polyfill(最推荐)

最快捷的方法是给Script Lab添加polyfill脚本,补全IE11缺失的现代API:

  • 打开你的Script Lab项目,切换到HTML标签页
  • 在<head>标签内添加以下代码(确保放在你自定义脚本的前面):
<script src="https://cdn.jsdelivr.net/npm/whatwg-fetch@3.6.2/dist/fetch.umd.min.js"></script>

这个polyfill会自动为当前环境补全fetch、Headers和Request这些对象,完全不需要修改你原有的代码逻辑,添加后重新运行项目即可。

2. 切换到Chromium引擎(适合新版Office)

如果你用的是Office 2019或365的最新版本,其实可以直接切换到现代Chromium-based的渲染引擎,原生支持Fetch API:

  • 打开Office应用(比如Excel/Word),依次点击文件 > 选项 > 信任中心 > 信任中心设置 > 受信任的加载项目录
  • 找到并勾选"使用Microsoft Edge WebView2运行加载项"(不同版本的路径可能略有差异)
    切换完成后,Script Lab会使用和Chrome一致的现代引擎,后续就不会再出现这类API未定义的问题了。

3. 替代方案:改用XMLHttpRequest(不推荐)

如果不想依赖polyfill,也可以把fetch相关代码替换成IE11原生支持的XMLHttpRequest,但需要重写部分逻辑,示例如下:

// 替代fetch GET请求的示例
const xhr = new XMLHttpRequest();
xhr.open('GET', '你的目标API地址');
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.onload = function() {
  if (xhr.status >= 200 && xhr.status < 300) {
    const data = JSON.parse(xhr.responseText);
    // 处理返回的数据
  } else {
    // 处理请求错误
  }
};
xhr.onerror = function() {
  // 处理网络连接错误
};
xhr.send();

不过这个方法需要改动原有代码结构,不如polyfill省心,只推荐作为临时应急方案。

内容的提问来源于stack exchange,提问作者A.Fuentes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:37:41