Issue with Office.context.document.settings.get



我正在使用以下内容从 Word 文档中读取设置:

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

此调用是在调用 :

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

这些设置存储在有效的 JSON 字符串 WebExtensionProperty: 我可以在 Open XML 生产力工具中看到设置对象,没有问题

We.WebExtensionProperty prop = new We.WebExtensionProperty(){ Name = "VariableName", Value = "{"A":"1"}" };
webExtensionPropertyBag1.Append(prop);
  • 当我从Visual Studio运行我的office-js加载项到Word(使用IE(时,该函数从存储在WebExtensionProperty中的JSON字符串返回正确的对象,
  • 当我将加载项旁加载到 Word 中(使用 IE(时,该函数也会正确返回,但是

  • 当我将加载项旁加载到 Word 在线(也使用 IE,即使使用 Chrome(时,该函数始终返回 null!

  • 当我从 OneDrive 下载文档时,我的属性仍在文件中。

我尝试在 json 字符串中使用简单的变量,但我从未设法让 Word Online 在这里返回任何值,而桌面上的 Word 总是完美运行。

我需要做些什么来"授权"使用此功能吗? 有人在Word Online中使用此方法吗?

我写入文件使用的设置是:

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

当我在 Word 联机上使用它时,可能是旁加载使相同的加载项不在我的 UNC 路径中,因此 Word 联机无法加载该值?

旁加载时使用的清单在所有情况下都是相同的。

谢谢

此问题是旁加载加载项的症状。这方面的一些背景知识可能会有所帮助。

某些加载项功能(如"设置"(键控到特定加载项。这使您可以确保您的设置不会被碰巧使用相同的设置名称的另一个加载项覆盖。当您从 Office 检索设置时,它仅返回最初归因于外接程序的那些设置。此属性与清单中的外接程序ID相吻合。

从应用商店或租户的外接程序目录加载外接程序时,外接程序会从清单文件中分配该外接程序的id。由于此值不会更改,因此它允许您跨平台和外接程序版本维护设置。

旁加载的工作方式不同。旁加载外接程序时,Office 将为其分配一个随机生成的 ID。这样做是为了确保您的开发和生产版本可以在同一台计算机上并行共存。如果 Office 使用清单中的 ID,它将有效地删除外接程序的生产版本。

在大多数情况下,旁加载的效果不会影响外接程序。除非您尝试跨计算机/平台测试设置,其中自动生成的 ID 会断开外接程序与其设置之间的连接。

解决此问题的方法是使用开发人员租户并在其中集中发布外接程序。这将自动处理外接程序在每个平台上的部署,并确保它们都使用相同的ID值。