【问题标题】:Office.js: ItemNotFound: The requested resource doesn't existOffice.js:ItemNotFound:请求的资源不存在
【发布时间】:2017-06-21 03:03:48
【问题描述】:

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

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

ItemNotFound: The requested resource doesn't exist.

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

有什么想法吗?

【问题讨论】:

  • 能否提供触发错误条件的代码?

标签: office-js excel-2016


【解决方案1】:

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

如果您使用 OfficeHelpers.Utilities.log()(找到 here)记录错误,它将为您提供所需的上下文,以了解它为何引发该错误。

【讨论】:

  • 太棒了,我不知道 OfficeHelpers.Utilities.log()。将仔细研究,谢谢。
【解决方案2】:

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

原来我在使用 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();
          ...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-19
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2021-02-18
    • 1970-01-01
    相关资源
    最近更新 更多