2017-07-17 21 views
0

我使用讀取從Word文檔設置:問題與Office.context.document.settings.get

Office.context.document.settings.refreshAsync(callbackFunction); 

的:

function callbackFunction(){ 
    var varValue = Office.context.document.settings.get("VariableName"); 
} 

調用該函數在通話結束後右設置存儲在一個有效的JSON字符串WebExtensionProperty中: 我可以在Open XML生產工具中看到設置對象,沒有問題

We.WebExtensionProperty prop = new We.WebExtensionProperty(){ Name = "VariableName", Value = "{\"A\":\"1\"}" }; 
webExtensionPropertyBag1.Append(prop); 
  • 當我跑我的辦公室-JS從Visual Studio插件到Word(使用IE),該函數返回從存儲在WebExtensionProperty JSON字符串正確的對象,
  • 當我側面插入我的加載項進入Word(使用IE),該功能也正常返回,但

  • 當我將我的加載項卸載到Word在線(也使用IE,即使與Chrome),函數總是返回null!

  • 當我從OneDrive下載文檔時,我的屬性仍在文件中。

我試圖用JSON字符串簡單的變量,但我從來沒有設法獲取詞在線曾經返回任何價值在這裏,而字在桌面上總是完美無缺。

有什麼我需要做'授權'使用此功能? 任何人都有在Word Online中使用此方法的運氣?

我寫到文件中使用的設置是:

new We.WebExtensionStoreReference(){ Id = "MyUniqueId", Version = "1.0.0.0", Store = "\\\\localhost\\OfficeManifest", StoreType = "Filesystem" }; 

當我使用它在Word中網上,會不會是側面加載使得這個相同的加載項不在我的UNC路徑中,因此, Word在線無法加載該值?

我在sideloading時使用的清單在所有情況下都是相同的。

謝謝

回答

0

此問題是側載加載項的症狀。關於此的一點背景可能會有所幫助。

某些加載項功能(如「設置」)被鍵入特定的加載項。這使您可以確保您的設置不會被恰好碰巧使用相同設置名稱的另一個加載項覆蓋。當您從Office檢索設置時,它僅返回最初歸因於加載項的設置。從您的清單中刪除加載項的ID

當從應用商店或租戶的加載項目錄加載加載項時,加載項會爲您的清單文件中的加載項指派id。由於此值不會更改,因此它允許您維護跨加載平臺和版本的設置。

側面加載的工作方式不同。當您加載加載項時,Office將爲其分配一個隨機生成的ID。這樣做是爲了確保您的開發和生產版本可以在同一臺機器上並排共存。如果Office使用清單中的ID,它將有效地刪除加載項的生產版本。

在大多數情況下,側向加載的影響對您的加載項沒有影響。除非您試圖在自動生成的ID打破了加載項與其設置之間的連接的計算機/平臺上測試設置。

解決方法是在此處使用developer tenantcentrally publish your add-in。這將自動處理每個平臺上的加載項的部署,並確保它們全都使用相同的ID值。

+1

感謝您的解答和時間來寫答案,希望它是不同的,但至少它現在有一定意義。 ++ – Magrems

+0

我自由地承認這應該是更令人困惑的方式。也就是說,構建替代方案是非常不平凡的。它已經被討論了很多次,但它是一個很難賣,因爲它影響了一個單一的功能。我會說Central Deployment確實是一個更好的模型,無論如何,它將爲您節省大量的時間在多個平臺上進行開發/測試。 –

+0

非常好的答案 –