2017-06-19 67 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(); 
      ...