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

Office Script类构造器调用getValues()触发failed to load报错如何解决

Office Script类构造器调用getValues报错问题解答

问题根因

这个报错和TypeScript本身的运行逻辑无关,属于Office Script API的特有执行约束导致的问题,核心原因如下:
Office Script所有需要读取Excel实际文档数据的API(比如getValues()),都需要和Excel宿主进行交互请求数据,依赖脚本执行上下文的宿主代理完成初始化。而类构造器属于JavaScript实例化的同步执行阶段,此时传入的ExcelScript.Table对象的宿主代理还未完成绑定,直接调用需要请求宿主的读数据API就会触发加载失败错误。
另外你代码里也存在一个API调用路径的差异:构造器内直接调用table.getValues(),而可正常运行的getVals()方法内调用的是table.getRange().getValues(),后者才是官方推荐的读取表格全量值的标准调用方式。

无需额外调用的解决方案

可以用静态工厂方法的模式规避构造器内调用API的问题,不需要额外单独调用初始化方法,示例代码如下:

function main(wkb: ExcelScript.Workbook){
  const tbl = wkb.getTable('test')
  // 直接调用静态工厂方法即可得到完全初始化的实例
  const info = Info.create(tbl)
}

class Info {
  table: ExcelScript.Table
  vals: string[][]

  // 构造器改为私有,仅做纯属性赋值,不调用任何Office Script交互API
  private constructor(table: ExcelScript.Table, vals: string[][]){
    this.table = table
    this.vals = vals
  }

  // 静态工厂方法先完成API调用,再生成实例
  static create(table: ExcelScript.Table): Info {
    const vals = table.getRange().getValues() as unknown[][] as string[][]
    return new Info(table, vals)
  }
}

内容的提问来源于stack exchange,提问作者Tomasz Golos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:03