Excel JS API - SettingCollection не сохраняется
Я пытаюсь обновить надстройку Excel, чтобы использовать книгу SettingCollection
вместо Office.context.document.settings
объект. Документация, кажется, предполагает, что они функционально эквивалентны, но с document.settings
я могу позвонить saveAsync()
и увидеть мои данные сохранились (в PropertyBag в webextensions.xml).
С ctx.workbook.settings.add('key', 'value')
Я могу получить настройки и получить их в текущем сеансе, но они не добавляются в webextensions.xml
и недоступны при следующем открытии надстройки.
Есть ли версия 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);
});
Параметр "Привет" устанавливает и действует следующим образом, если я перезапускаю свою надстройку, но нет, если я закрываю файл и открываю свою надстройку.
1 ответ
В настройках Excel есть ошибка для настроек, можете ли вы попробовать вариант Shared 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")); }