如何让OfficeRuntime.Storage在Mac上运行(这样不同应用程序中的两个打开的加载项就可以交换数据)



我的加载项在Excel和Word之间共享数据。我正在尝试使用带有sharedRuntime的OfficeRuntime.Storage来执行此操作。它在Windows上运行得很好(支持Office版本(,但我无法让它在Mac上完全运行(它不共享数据外接程序和外接程序(。

我使用此处引用的OfficeRuntime.storage.setItem(键,值(和OfficeRuntime/storage.getItem(键(:https://learn.microsoft.com/en-us/javascript/api/office-runtime/officeruntime.storage?view=common-js

Excel和Word都从同一个清单(1个清单(加载加载项。

运行时已添加到两个Host部分的清单中,以启用sharedRuntime

<Host xsi:type="Workbook">
<Runtimes>
<Runtime resid="Taskpane.Url" lifetime="long" />
</Runtimes>

<Host xsi:type="Document">
<Runtimes>
<Runtime resid="Taskpane.Url" lifetime="long" />
</Runtimes>

加载项在Windows和Mac上都执行以下操作:

  • 在同一个加载项中,getValue确实成功地获取了setValue
  • 关闭外接程序只会隐藏外接程序;打开它只是将其取消隐藏(正如SharedRuntime工作所预期的那样(
  • setValue将值添加到localStorage,类似于"_OfficeRuntime_Storage_myKey"(再次暗示SharedRuntime正在运行(

在Windows中,Word加载项可以(在任何时候(成功地获取Excel加载项中设置的值,反之亦然。

但是,在Mac电脑上,Word加载项看不到Excel中设置的值(反之亦然(。此外,其他外接程序无法像在Windows上那样,在其他外接模块中看到localStorage[_OfficeUntime_Storage_myKey]集。

我试过十几台Mac电脑(需要Office版本(,但没有一台在外接程序之间共享数据。

因此,在我看来,这两个插件在Windows上运行在同一个运行时,但不是Mac(尽管它似乎认为是这样(。

我在清单的两个主机部分都有以下操作。这会引起问题吗?

<Action xsi:type="ShowTaskpane">
<TaskpaneId>Office.AutoShowTaskpaneWithDocument</TaskpaneId>
<SourceLocation resid="Taskpane.Url" />
</Action>

如何让OfficeRuntime.Storage(或其他存储方法(在Mac上工作(这样两个打开的加载项就可以交换数据(?

共享运行时是为在同一个外接程序中使用而设计的,而不是像从名称中听起来那样在外接程序之间使用。共享运行时与存储没有任何关系。

OfficeRuntime.Storage接口具有以下描述:

Storage limit is 10 MB per domain, which may be shared by multiple add-ins.

所以,这听起来像是MacOS的一个问题。在这种情况下,我建议在github中提交一个关于OfficeJS repo的问题。

最新更新