Могу ли я вызвать Excel.run () на странице, размещенной внутри диалогового окна Excel (с использованием технологии office-js addin)

#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. Очень хорошо! Мне не нравится выбор дизайна, но это четко задокументировано на этой странице. Спасибо!