首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >库函数使用已安装的触发器生成“您没有权限调用showModalDialog”错误。

库函数使用已安装的触发器生成“您没有权限调用showModalDialog”错误。
EN

Stack Overflow用户
提问于 2018-08-30 13:09:55
回答 1查看 772关注 0票数 1

我有一个Apps脚本项目,在这里我使用一个库来控制多个电子表格(每个用户一个)。这允许我将所有代码保存在一个地方,供许多用户使用。

每个用户的电子表格都有一个可安装的触发器(在编辑上),该触发器作为一个具有授权的用户运行,并从库中调用函数。

我现在犯了个错误,因为我以前没犯过错误:

“您无权调用showModalDialog”

实际上,在库中使用showModalDialog来使用电子表格向用户发送警报。我使用的是showModalDialog而不是ui.alert(),因为当用户在5分钟后没有响应时,ui.alert()会停止代码并抛出错误(比方说,他们离开了计算机)。这以前起过作用,但最近停止了工作。为什么??

我的脚本文件包括以下范围:

代码语言:javascript
运行
复制
https://www.googleapis.com/auth/script.container.ui
https://www.googleapis.com/auth/script.external_request
https://www.googleapis.com/auth/script.send_mail
https://www.googleapis.com/auth/spreadsheets

下面是用户绑定脚本中的代码:

代码语言:javascript
运行
复制
function userEdited(e) {
  Library.userEdited(e);
}

用户绑定脚本有一个可安装的触发器,它运行"userEdited“和"On编辑”事件。

以下是库脚本中的代码:

代码语言:javascript
运行
复制
function userEdited(e){
  alert("the dialogue works");
}

function alert(message){
  var htmlOutput = HtmlService
    .createHtmlOutput('<p>' + message + '</p>')
    .setWidth(300)
    .setHeight(message.length / 50 * 25 + 30);
  SpreadsheetApp.getUi().showModalDialog(htmlOutput, "HAL 9000");
}
EN

回答 1

Stack Overflow用户

发布于 2018-09-18 18:19:54

我还没有找到为什么showModalDialog不工作的原因,但我找到了一个解决办法。我现在使用的是SpreadsheetApp.getUi().alert()和/或Browser.msgBox(),它即使在打开(可安装触发器)时也不会引发任何权限错误。它仍然不理想,因为这些方法确实挂起服务器端脚本,导致脚本在5分钟后超时的可能性,如果用户离开计算机。

根据应用程序脚本文档,我没有任何理由发现showModalDialogue在从可安装触发器调用时会抛出权限错误。如果有一种对话方法不会停止服务器端脚本,那就太好了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52097945

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档