用户没有调用 showModalDialog() 的权限



在Google表格中,我使用此代码在用户编辑某些单元格后打开URL,但是存在问题:我可以在模态窗口中打开URL,但其他编辑器不能。当我查看堆栈驱动程序日志时,我看到错误指出脚本无权调用 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 ...');
}

我已经为"onEditTrigger"功能安装了一个"编辑"触发器。如何确保它适用于所有编辑器?

你不能

让你的脚本仅仅通过与其他用户共享来执行JS代码片段。您的协作者仍需要打开脚本编辑器并手动重新授权绑定的脚本。当然,谷歌会在他们这样做的时候向他们发出通常的警告。

OnEditTrigger 仍将触发,但注入客户端代码将导致失败。

JS代码可用于恶意目的和窃取私人数据,因此我认为Google不会允许任何人避免显式授权流。

最新更新