Вызовите showSidebar () из ячейки электронных таблиц Google. - PullRequest
1 голос
/ 27 января 2020

Как пользователь Serge insas ответил здесь ,

Диалоги пользовательского интерфейса не могут быть вызваны функциями, запускаемыми по времени, они должны запускаться пользователем действие, то есть нажатие на элемент меню или какую-то кнопку, вызывающую функцию, отображающую пользовательский интерфейс.

Как насчет вызова showSidebar () или showModalDialog () из клетки? Что-то вроде следующей формулы, которая должна открывать боковую панель автоматически, когда значение в A1 больше 0:

=if(A1>0;showSidebar();"nothing to show")

Возможно ли это?

Это мой сценарий:

function onOpen() {
  SpreadsheetApp.getUi().createAddonMenu().addItem('Open Beeper', 'openBig').addToUi();
}

function openBig() {
  var htmlContent = HtmlService.createHtmlOutputFromFile('audioHtml').setTitle('Beeper');
  SpreadsheetApp.getUi().showSidebar(htmlContent);
}

Я могу открыть боковую панель, без проблем щелкнув по элементу в меню дополнений, но когда я вызываю openBig () из Я получаю следующую ошибку:

Невозможно вызвать SpreadsheetApp.getUi () из этого контекста.

Что я делаю не так? Чего не хватает?

1 Ответ

1 голос
/ 27 января 2020

TheMaster прав. Вы не делаете ничего плохого. Просто вы не можете вызвать SpreadsheetApp.getUi() с самого листа (любой ячейки). Его можно вызывать только из контекста меню.

...