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

Office Script调用天气API时出现两类报错的问题求助

Office Script调用天气API时出现两类报错的问题求助

嘿,能看出你正在入门Office Script,尝试调用天气API的思路真的很棒!不过你的代码里藏着几个小问题,刚好能解释你遇到的栈溢出错误和潜在的其他问题,咱们一步步来捋清楚:

首先,先揪出最明显的拼写错误:

  • 你定义的城市变量是const cuslocation = "New York",但拼接API地址的时候却写成了colocation,这个拼写失误会导致变量未定义,虽然它不一定直接引发栈溢出,但会让API请求地址彻底失效,进而触发后续的异常连锁反应。

然后是fetch请求的处理问题,这大概率是栈溢出的直接诱因:

  • response.Text()这里的方法名写错啦!应该是小写的response.text(),大写的T会让程序调用一个不存在的方法,这种错误很容易触发未处理的异常,进而导致栈溢出;
  • 另外,fetch返回的是一个Promise对象,咱们需要正确解析它,而且Office Script里处理异步请求时,最好加上错误捕获逻辑,避免异常扩散引发崩溃。

给你整理了修正后的完整代码,你可以直接替换测试:

async function main(workbook: ExcelScript.Workbook) {
  // 定义城市变量,确保拼写前后一致
  const cuslocation = "New York";
  // 替换成你的真实API密钥
  const apiKey = "****367d8059062daa61b5**********";
  // 用字符串模板拼接URL,比加号更清晰不易错
  const endpoint = `http://api.weatherstack.com/current?access_key=${apiKey}&query=${cuslocation}`;

  try {
    const response = await fetch(endpoint);
    // 先检查请求是否成功
    if (!response.ok) {
      throw new Error(`请求失败,状态码:${response.status}`);
    }
    // 正确解析响应文本(注意是小写的text())
    const weatherData = await response.text();
    console.log(weatherData);

    // 如果你想把数据写入Excel,这里给你个示例(写入Sheet1的A1单元格)
    const targetSheet = workbook.getWorksheet("Sheet1");
    targetSheet.getRange("A1").setValue(weatherData);
  } catch (error) {
    console.error("发生错误:", error);
    // 也可以把错误信息写入Excel方便查看
    const targetSheet = workbook.getWorksheet("Sheet1");
    targetSheet.getRange("A1").setValue(`错误信息:${error}`);
  }
}

最后再补充几个实用小提醒:

  • 一定要保管好你的API密钥,别随便分享出去;
  • 栈溢出错误基本就是错误的方法调用(大写Text())加上未处理的异常导致的,修正方法名后应该就能解决;
  • 用字符串模板(反引号``)拼接URL比加号更直观,也不容易出现拼写遗漏;
  • 加上try-catch块能帮你精准定位错误,避免程序莫名其妙崩溃。

备注:内容来源于stack exchange,提问作者Cool_Coder

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 13:52:40