У пользователя нет прав для вызова showModalDialog () - PullRequest
2 голосов
/ 09 апреля 2019

В Google Sheets я использую этот код для открытия URL-адреса после того, как пользователь отредактировал некоторую ячейку, но есть проблема: я могу открыть URL-адрес в модальном окне, но другие редакторы не могут.Когда я просматриваю журналы Stackdriver, я вижу ошибки, из-за которых у сценария нет разрешения на вызов showModalDialog ().

function onEditTrigger(e) {
  var eRange = SpreadsheetApp.getActiveSpreadsheet().getActive().getActiveRange();
  var eRow = eRange.getRow();
  var eCol = eRange.getColumn();

  if (eCol == 1) 
    openUrl("https://stackoverflow.com");
}

function openUrl(url) {
  var html = "<script>window.open('" + url + "'); google.script.host.close();</script>";
  var userInterface = HtmlService.createHtmlOutput(html).setHeight(6).setWidth(9);
  SpreadsheetApp.getUi().showModalDialog(userInterface, 'Opening ...');
}

Я установил триггер «edit» для функции «onEditTrigger».Как я могу убедиться, что это работает для всех редакторов?

1 Ответ

1 голос
/ 09 апреля 2019

Вы не можете заставить свой скрипт выполнять фрагменты кода JS, просто поделившись им с другими пользователями. Вашим соавторам все равно нужно будет открыть редактор скриптов и вручную повторно авторизовать связанный скрипт. Конечно, Google будет выдавать обычные предупреждения на них, пока они это делают.

OnEditTrigger будет по-прежнему срабатывать, но внедрение кода на стороне клиента приведет к сбою.

Код JS может использоваться для злонамеренных целей и кражи личных данных, поэтому я не думаю, что Google позволит кому-либо избежать явного потока авторизации.

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