我在任务窗格应用程序中使用Settings
的{{1}}对象来保存文档中的一些键值对。
我的代码是这样的
Office.context.document.settings.set(key, value);
Office.context.document.settings.saveAsync(function () {
Toast.showToast("Setting saved", "Info saved into the document using saveAsync");
});
我也在调用saveAsync
函数来保持值。
我面临的问题是Word Online中没有保留设置,因为当前设置对象为JavaScript API
有没有办法找到应用程序在Word Online中运行,因此可以显示消息,或者可以使用localStorage或其他东西来保存值。
修改:创建了一个uservoice请求以在Word Online中添加此请求,您可以支持此功能not supported in Word Online
修改2
为了更好地解释问题并分享示例,我创建了一个示例插件,清单位于here。
您可以在此处键入密钥test
的值,然后按保存,这会在内部调用here中的函数saveToPropertyBag(key, value)
。此函数具有上述代码以保存设置,然后调用saveAsync
,以便值保持在文档中。
现在您可以刷新浏览器或重新加载插件,然后按get,该值将在Excel和Powerpoint中可用,但在Word Online中不可用。
所以我正在寻找一种方法来检测主机(Word Online),以便我可以回退到另一种方式来存储值,就像本地存储一样,并向用户显示警告。
答案 0 :(得分:2)
请参阅我对Neat ways to get environment (i.e. Office version)
的回答基本上,您应该可以致电
if (Office.context.requirements.isSetSupported("Settings", 1.1)) {
// Use Office settings
} else {
// Fall back to local storage or something else.
}
~Michael Zlatkovsky
Office扩展性团队开发人员,MSFT