【问题标题】:User haven't permissions for calling showModalDialog()用户无权调用 showModalDialog()
【发布时间】:2019-04-09 12:47:40
【问题描述】:

在 Google 表格中,我使用此代码在用户编辑某些单元格后打开 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 ...');
}

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

【问题讨论】:

  • @tehhowch,没有结果。我已删除所有触发器并在 onInstall(e) 中重新安装它们,但没有任何更改,并且当表的其他编辑器尝试执行此操作时,模式窗口不会打开。

标签: google-apps-script google-sheets triggers


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-08
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 2021-10-01
    相关资源
    最近更新 更多