我目前使用以下函数在Office.context.documents.settings
中存储键值对:
Office.context.document.settings.set(name, value);
一旦存储了键值对,我将重新启动加载项并尝试使用以下函数获取值 -
Office.context.document.settings.get(name);
但该函数返回null
而不是正确的值。存储在文档设置中的值是否会在应用程序的多个会话中持续存在,或者在关闭应用程序后是否会刷新?
您的问题没有太多细节,但使用设置时有两个常见错误:
无法加载设置
在读取给定设置之前,您需要填充settings
对象。这是使用refreshAsync()
完成的:
Office.context.document.settings.refreshAsync(function(){
Office.context.document.settings.get(name);
});
侧载加载项
当您侧载加载项时,Office会生成一个随机ID并将其分配给您的加载项。如果您删除并重新加载加载项,它将生成一个新ID。如果您在两台不同的计算机上加载相同的加载项,您还将获得两个不同的ID。
这会影响settings
的功能,因为当从文档中存储或调用外接ID时,设置会被设置键入。有关其工作原理(以及如何解决)的详细信息,请参阅Issue with Office.context.document.settings.get。
由于您未调用saveAsync
,因此未保存该设置。 set
方法仅将设置保存在内存中,而不保存到文件中。要保存到文件,您必须先调用set
,然后调用:
Office.context.document.settings.saveAsync(callback);
然后,当您重新加载加载项时,您将能够使用get
检索设置。这是saveAsync
方法的文档页面:https://dev.office.com/reference/add-ins/shared/settings.saveasync
-Michael,PM加载项