Функция библиотеки генерирует ошибку «У вас нет прав для вызова showModalDialog» с установленным триггером - PullRequest
0 голосов
/ 30 августа 2018

У меня есть проект Apps Script, где я использую одну библиотеку для управления несколькими электронными таблицами (по одной для каждого пользователя). Это позволяет мне хранить весь код в одном месте для многих пользователей.

Электронная таблица каждого пользователя имеет устанавливаемый триггер (при редактировании), который запускается как отдельный пользователь с авторизацией и вызывает функции из библиотеки.

Теперь я получаю сообщение об ошибке, которого не было раньше:

"У вас нет разрешения на вызов showModalDialog"

showModalDialog действительно используется в библиотеке для доставки оповещений пользователю, использующему электронную таблицу. Я использую showModalDialog вместо ui.alert(), потому что ui.alert() останавливает код и выдает ошибки, когда пользователь не отвечает через 5 минут (скажем, он ушел со своего компьютера). Это работало раньше, но недавно перестал работать. Почему ??

Мои файлы сценариев включают следующие области действия:

https://www.googleapis.com/auth/script.container.ui
https://www.googleapis.com/auth/script.external_request
https://www.googleapis.com/auth/script.send_mail
https://www.googleapis.com/auth/spreadsheets

Вот код в пользовательском скрипте:

function userEdited(e) {
  Library.userEdited(e);
}

пользовательский скрипт имеет устанавливаемый триггер, который запускает «userEdited» с событием «On edit».

Вот код в скрипте библиотеки:

function userEdited(e){
  alert("the dialogue works");
}

function alert(message){
  var htmlOutput = HtmlService
    .createHtmlOutput('<p>' + message + '</p>')
    .setWidth(300)
    .setHeight(message.length / 50 * 25 + 30);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, "HAL 9000");
}

1 Ответ

0 голосов
/ 18 сентября 2018

Я не нашел причину, по которой showModalDialog не работает, но я нашел обходной путь. Я сейчас использую SpreadsheetApp.getUi (). Alert () и / или Browser.msgBox () , который не выдает никаких ошибок разрешения даже во время открытия (устанавливаемый триггер). , Это все еще не идеально, потому что эти методы приостанавливают выполнение сценария на стороне сервера, что приводит к возможности отключения сценария по истечении 5 минут, если пользователь уходит от компьютера.

В соответствии с документацией скрипта приложения, я не вижу причин, по которым showModalDialogue будет выдавать ошибки прав доступа при вызове из устанавливаемого триггера. Было бы неплохо иметь метод диалога, который не останавливал бы сценарий на стороне сервера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...