我正在尝试更新Excel加载项以使用工作簿SettingCollection
而不是Office.context.document.settings
对象。该文档似乎表明它们在功能上是等效的,但是使用document.settings
,我可以调用saveAsync()
并看到我的数据得以保留(在webextensions.xml中的PropertyBag中)。
使用ctx.workbook.settings.add('key', 'value')
,我可以获取设置并在当前会话中获取它们,但是它们不会被添加到webextensions.xml
中,并且在下一次打开该add-时不可用。内。
我缺少工作簿设置的saveAsync
版本吗?我以为context.sync
会照顾好它,但我没有运气。
编辑:我知道是什么导致了最初的问题,但是问题仍然存在。当我使用Excel Online关闭浏览器选项卡并使用外接程序重新打开它时,设置不会保留。什么都没有添加到webextensions.xml
中。
这是一个示例Excel.run()
window.Excel.run(async ctx => {
ctx.workbook.settings.add('hello', 'world');
await ctx.sync();
let setting = ctx.workbook.settings.getItemOrNullObject('hello');
setting.load('value');
await ctx.sync();
console.log(setting.value);
});
如果重新启动外接程序,则设置“ hello”并存在下一个,但是如果我关闭文件并打开外接程序,则不存在。
答案 0 :(得分:0)
Excel富API的设置有一个错误,同时您可以尝试使用共享API来解决此问题吗?
function createSetting(){ Office.context.document.settings.set(“ Foo”,“ bar”); Office.context.document.settings.saveAsync(); }
function readSetting(){ console.log(Office.context.document.settings.get(“ Foo”))); }