如何从电子表格中获取文件绑定脚本的用户许可?

时间:2019-02-04 22:31:46

标签: javascript user-interface google-apps-script google-apps

我有一个简单的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()(顺便说一句,它没有任何权限问题也可以正常工作),因为我需要一个非阻塞警报。

我基于google apps script docs page对此问题的理解,尤其是“自定义侧边栏”会话。

我该如何摆脱对权限的需求,或者强制电子表格的用户从一开始就授予他们权限?

0 个答案:

没有答案