2017-06-19 68 views
1

我正在创建一个Office外接程序,该程序在通过单击命令功能区中的按钮启动的任务窗格中运行。该应用程序本身是一个简单的查找工具。您选择一个单元格(或单元格范围),然后它会碰到另一个端点(我设置了一个端点)来查找并返回相关信息。Office.js:ItemNotFound:请求的资源不存在

在大多数电子表格,一切正常,但是在一些表格,它似乎打破试图打端点,而我得到这个错误:

ItemNotFound: The requested resource doesn't exist. 

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

任何想法?

+1

你能提供触发错误条件的代码吗? –

回答

1

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

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

+1

真棒,我不知道OfficeHelpers.Utilities.log()。请高清看看,谢谢。 –

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