#office-js
#office-js
Вопрос:
Я пишу дополнение office-js для Excel.
У меня есть некоторый код, запущенный внутри html-страницы:
Logger.Log(`about to call GetActiveSheetID`);
Excel.run((context) => {
const sheets: any = context.workbook.worksheets;
const activeSheet: any = sheets.getActiveWorksheet();
return context.sync().then(() => {
Logger.Log(`GetActiveSheetID returns ${activeSheet.id}`);
});
}).catch((e) => {
Logger.Log(e.message);
});
В стороне: Logger записывает в localstorage, чтобы его можно было прочитать обратно
в другом месте, поскольку консоли отладчиков, похоже, работают не очень
часто.
Когда я размещаю этот фрагмент страницы javascript / html внутри диалогового окна (используя office dialog API), я получаю эти записи журнала:
2019-03-14T21:14:24.043Z about to call GetActiveSheetID
2019-03-14T21:14:24.059Z An internal error has occurred.
Когда я запускаю точно такую же страницу / код внутри панели задач, я получаю:
2019-03-14T21:14:47.162Z about to call GetActiveSheetID
2019-03-14T21:14:47.185Z GetActiveSheetID returns {00000000-0001-0000-0000-000000000000}
Похоже, что Excel.run () не работает при размещении внутри диалогового окна office? Таким образом, диалоговое окно нельзя использовать для изменения данных электронной таблицы Excel.
Ответ №1:
Я боюсь, что единственный Office.js API, которые вы можете вызывать внутри диалогового окна, являются isSetSupported
и messageParent
. Если вам нужен другой Office.js функциональность, вам нужно передать сигнал из диалогового окна с messageParent
на родительскую страницу и вызвать Office.js API, которые вам нужны на родительской странице.
Для получения дополнительной информации см. Dialog API.
Комментарии:
1. Спасибо. Это соответствует тому, что я наблюдал, но задокументировано ли это где-либо, и, вероятно, так и останется? @Рик Киркхам
2. Я отредактировал свой ответ, чтобы указать на статью, которая документирует это. Смотрите «Примечание» примерно на 1/3 пути к статье.
3. Очень хорошо! Мне не нравится выбор дизайна, но это четко задокументировано на этой странице. Спасибо!