【问题标题】:When executed by someone else, the script execution does not resume after a call to Browser.msgBox()当由其他人执行时,调用 Browser.msgBox() 后脚本执行不会恢复
【发布时间】:2014-05-22 01:58:14
【问题描述】:

我有一个谷歌电子表格,其中提到了我们团队必须完成的一些任务。在一列下,我们维护任务状态。我添加了一个在电子表格更改时触发的 Google 应用脚本。脚本的主要工作是向某些 Google 邮件组发送有关更改的电子邮件通知。 在脚本中,我使用 Browser.msgBox() 来获取是/否的输入。现在,如果我更改电子表格中的状态,弹出窗口会在按钮单击时恢复,并使用按钮的值。如果其他人在电子表格中进行了更改,他会收到弹出窗口,但单击是/否按钮脚本不会恢复。

我的脚本看起来像这样:

function statusChangeNotification(e) {
  var user = e.user;
  var sheet = e.source.getActiveSheet();
  var range = e.range;
  var val = e.value;

  if(sheet.getName() == RESPONSE_SHEET && isStatusField(range)){
    if(val == STATUS_YES){
      var sendMail = Browser.msgBox("Status Changed", "Do you wanna send a status notification mail?", Browser.Buttons.YES_NO);
      if(sendMail == "yes"){
        // code to send email using MailApp.sendEmail()
      }
    }
  }
}

class browser reference 下的 Google 开发人员中,他们提到了这一点

msgBox(标题、提示、按钮)

弹出一个带有给定标题、消息和指定的对话框 用户浏览器中的按钮。 msgBox 方法引发客户端 具有给定标题的消息框,显示给定消息 用户,并提供要显示的按钮选择。注意 此方法会导致服务器端脚本暂停。它会 用户清除对话框后自动恢复,但 JDBC 连接不会在暂停期间持续存在。

在为其他人调用 Browser.msgBox() 后脚本无法恢复的问题可能是什么?请提出一些替代方案来达到同样的效果。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    请看下面的帖子:

    Quiet .hashCode() death of a script (GAS)

    此外,这个记录的 GAS 问题:

    https://code.google.com/p/google-apps-script-issues/issues/detail?id=2697

    对于除脚本+电子表格所有者之外的所有用户,在 Browser.msgBox() 之后,tl/dr 脚本将失败

    【讨论】:

    • 嗨@samscholefield,你是对的。谷歌论坛上记录了一个案例,但有什么解决方法可以解决这个问题吗?
    • 你好@Nitesh。解决方法是使用 UiApp 创建自定义“对话框”框并将输入的任何值返回给脚本。
    【解决方案2】:

    我的理解是,您正在使用onEdit 触发器在弹出确认后发送电子邮件。 onEdit 触发器是一个简单的触发器,它的范围有限。 您不能使用 onEdit 事件发送电子邮件。您将不得不使用可安装的触发器,例如时间驱动触发器等。

    为了更好地理解触发器及其范围,您可以查看这两个参考链接。

    【讨论】:

    • 嗨@waqar-ahmad,你是对的。我正在使用 onEdit 触发器。但我是说发送邮件没有问题。当我编辑电子表格时,一切正常。但是当其他人编辑电子表格时,会触发脚本,出现确认弹出窗口,然后终止该脚本。如果我删除了 msgBox() 弹出窗口,那么脚本会继续执行,并且邮件也会发送给其他人进行编辑。
    猜你喜欢
    • 2017-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    相关资源
    最近更新 更多