Как запросить разрешение пользователя из таблицы для сценария с привязкой к файлу? - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть простая Google Spreadsheet с некоторым кодом, то есть мой скрипт привязан к файлу Spreadsheet (нет автономного кода, ни кода, развернутого в качестве надстройки).Когда пользователь редактирует один данный столбец, сценарии запускают проверку электронной почты (то есть сравнивает текущую электронную почту пользователя с той, что сохранена в таблице).Код выглядит следующим образом:

function showDialog() {
    var ui = SpreadsheetApp.getUi();
    var html = HtmlService.createHtmlOutput("Apenas o usuário que registrou a emissão da passagem pode realizar alterações em seu registro!<br><input type=\"button\" value=\"Fechar\" onclick=\"google.script.host.close()\" />")
    .setWidth(400)
    .setHeight(90);
    ui.showModalDialog(html, 'Edição não permitida!');
}

function onEdit(e){
    var ui = SpreadsheetApp.getUi();
    var this_file = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/key_to_my_file/edit');
    var main_sheet = this_file.getSheetByName("Tickets");  
    var edited_range = e.range;  
    var edited_row = edited_range.getRow();

    if(e.user != main_sheet.getRange("B"+edited_row).getValue()){
          edited_range.setValue(e.oldValue);
          showDialog();
    }
}

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

Однако, когда дело касается других пользователей, это не работает.Я не вижу никакой ошибки в журналах выполнения для триггера OnEdit, который у меня есть, ничего.Если затем пользователь откроет редактор сценариев, запустит функцию showDialog, предоставит разрешения в следующем окне, все начнет работать.

Однако я не могу ожидать, что нетехнические пользователисможет сделать все это.Мне нужен способ, чтобы быть в состоянии выполнить эти шаги.Кроме того, я должен использовать пользовательский диалог, а не обычный ui.alert () (который работает, кстати, без проблем с разрешениями), потому что мне нужно неблокирующее предупреждение.

I 'Основываясь на моем понимании этого вопроса, страница документации сценариев приложений Google , в частности, сеанс "Пользовательские боковые панели".

Как можно избавиться от необходимости в разрешениях или заставитьпользователь моей таблицы, чтобы предоставить их от начала?

...