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

Office.js: ItemNotFound: The requested resource doesn't exist

我正在创建一个在任务窗格中运行的 Office 加载项,该任务窗格通过单击命令功能区中的按钮启动。该应用程序本身是一个简单的查找工具。您 select 一个单元格(或单元格区域),它到达另一个端点(我设置的一个端点)以查找和 return 相关信息。

在大多数 spreadsheets 上,一切都按预期工作,但是在某些 spreadsheets 上,它似乎在尝试达到终点时中断了,我明白了错误:

ItemNotFound: The requested resource doesn't exist.

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

有什么想法吗?

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

如果您使用 OfficeHelpers.Utilities.log() 记录错误(发现 here),它将为您提供您需要的上下文以了解它抛出该错误的原因。

我错了,我的端点与这个问题无关

结果我遇到了 Worksheet -> getRange() 的问题,因为 sheet 名称中有空格并且可能使用不正确。

举个例子。 如果 sheet 名称中没有空格,这种类型的代码对我来说很好

      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();
          ...    


但是,如果我尝试使用相同的代码,在一个有空格的 sheet 名称上,一切都会崩溃:

    var sheetName = 'Sheet Two';


什么对我有用(只需将 "range" 部分传递给 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();
          ...