首页 > 解决方案 > Office.context.document.settings.get 无法跨多个平台使用同一个 Word 加载项

问题描述

在已发布的 Word 加载项中,我使用该Office.context.document.settings.get方法从. 在同一用户设置(Word 版本、平台、操作系统等)上将数据保存到 Word 文档(特别是文件)时,可以毫无问题地检索正确的数据。但是,当打开相同的 Word 文档并在另一台机器上启动相同的已发布加载项(例如,不同的 Word 版本)时,该方法返回,并创建第二个 webextension 文件 ( )。Office.context.document.settings.setOffice.context.document.settings.saveAsyncWord Javascript API Version 1.1webextension.xmlOffice.context.document.settings.getnullwebextension2.xml

我了解,加载加载项时,Office 使用id清单文件中的作为密钥来确保数据不会被另一个加载项覆盖,正如Stack Overflow 帖子中所描述的那样。在我之前提到的问题中,文件中元素的、和id属性包含来自我们加载项清单文件的正确数据。不知何故,Office 似乎无法将此数据识别为来自同一加载项。versionstorestoreTypewe:referencewebextension.xml

Office.context.document.settings.get关于在这种情况下为什么返回 null 的任何其他想法?

示例 xml webextension1.xml:示例 xml(不能再被识别为属于我们的应用程序)

<we:reference id="id1234" version="3.0.0.0" store="en-US" storeType="OMEX"/>
<we:alternateReferences>
    <we:reference id="id1234" version="3.0.0.0" store="id1234" storeType="OMEX"/>
</we:alternateReferences>

webextension2.xml: 示例 xml(可以识别为由我们的应用程序创建)

<we:reference id="id1234" version="3.0.0.0" store="en-001" storeType="OMEX"/>
<we:alternateReferences>
    <we:reference id="id1234" version="3.0.0.0" store="en-001" storeType="OMEX"/>
</we:alternateReferences>

附加上下文

标签: office-js

解决方案


根据我的经验,Word 缺少一个 API 来跨设备和跨文档存储每个用户的键值对。Outlook 有一个名为 Office.RoamingSettings 的 API,它正是这样做的,但它在 Word 中不可用。

[1] https://docs.microsoft.com/en-us/office/dev/add-ins/develop/persisting-add-in-state-and-settings

我最近也看到了更多关于此的问题。我使用localStorageapi 跨文档共享键值对(但这仍然不适用于跨设备)。

微软的某个人可能能够更好地澄清这一点。


推荐阅读