Office.js:ItemNotFound:请求的资源不存在

时间:2017-06-19 22:04:26

标签: office-js excel-2016

我正在创建一个在任务窗格中运行的Office加载项,该窗格是通过单击命令功能区中的按钮启动的。应用程序本身是一个简单的查找工具。您选择一个单元格(或单元格范围),它会命中另一个端点(我设置的一个端点)来查找并返回相关信息。

在大多数电子表格中,一切都按预期工作,但在某些电子表格中,它似乎打破尝试点击端点,我收到此错误:

ItemNotFound: The requested resource doesn't exist.

但是,我知道资源确实存在且工作正常因为我可以将数据复制到同一文件中的另一个工作表,并且加载项工作正常;但是,我似乎无法让它在这个特定的主页上工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

这可能是加载项的错误,而不是外部资源。当您尝试使用range.getUsedRange()并且该范围内没有任何内容时,Excel将抛出ItemNotFound: The requested resource doesn't exist.

如果您使用OfficeHelpers.Utilities.log()(找到here)记录错误,它将为您提供查看错误原因所需的上下文。

答案 1 :(得分:1)

我错了,我的终点与此问题无关。

事实证明,由于在工作表名称中有空格而且可能使用不正确,我遇到了Worksheet -> getRange()的问题。

这是一个例子。 如果工作表名称中没有空格,这种类型的代码对我很有用

      Excel.run(async (ctx) => {
          var sheetName = 'Sheet1';
          var rangeAddress = 'A1:A4';
          var address = sheetName +"!"+ rangeAddress;
          var worksheet = ctx.workbook.worksheets.getItem(sheetName);
          var range = worksheet.getRange(address);
          await ctx.sync();
          ...    


但是,如果我尝试使用相同的代码,在具有空格的工作表名称上,一切都会爆炸:

    var sheetName = 'Sheet Two';


什么对我有用(只需将"范围"部分传递给getRange()函数,而不是我的整个地址):

      Excel.run(async (ctx) => {
          var sheetName = 'Sheet1';
          var rangeAddress = 'A1:A4';
          var worksheet = ctx.workbook.worksheets.getItem(sheetName);
          var range = worksheet.getRange(rangeAddress);
          await ctx.sync();
          ...