Office.context.document.settings.get 的问题

Mag*_*ems 0 office-js

我正在使用以下方法从 Word 文档读取设置:

function callbackFunction(){
    var varValue = Office.context.document.settings.get("VariableName");
}
Run Code Online (Sandbox Code Playgroud)

此调用是在调用以下命令后立即进行的:

Office.context.document.settings.refreshAsync(callbackFunction);
Run Code Online (Sandbox Code Playgroud)

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

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

  • 当我将加载项旁加载到 Word Online 中时(也使用 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" };
Run Code Online (Sandbox Code Playgroud)

当我在 Word Online 上使用它时,侧面加载是否会导致相同的加载项不在我的 UNC 路径中,因此 Word Online 无法加载该值?

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

谢谢

Mar*_*eur 6

此问题是侧面加载加载项的症状。了解一下这方面的背景可能会有所帮助。

某些加载项功能(例如“设置”)与特定加载项相关。这可以确保您的设置不会被恰好使用相同设置名称的另一个加载项覆盖。当您从 Office 检索设置时,它仅返回最初归属于您的加载项的那些设置。此属性与您的清单中的加载项无关ID

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

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

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

解决方法是使用开发人员租户并在那里集中发布您的加载项。这将自动处理您的加载项在每个平台上的部署,并确保它们都使用相同的ID值。