【问题标题】:Creating a Dialog Prompt Box from an onEdit Function isn't working从 onEdit 函数创建对话框提示框不起作用
【发布时间】:2020-07-10 20:23:14
【问题描述】:

每当编辑某个列时,我都会尝试为 Google 表格文件创建对话框提示。每当我手动运行它时,提示都会打开,但由于某种原因,当我尝试在 onEdit 函数中运行它时,它会停止工作。正如您从下面的代码和日志中看到的那样,错误似乎发生在结果变量上,因为那是 Logger 停止输出内容的时候。任何帮助将不胜感激,在此先感谢。

代码:

    function onEdit(e){
  
  Logger.log("onEdit");
  var spreadSheet = e.source;
  var sheet = spreadSheet.getActiveSheet();
  var sheetName = sheet.getName();
  if(sheetName =='Sheet1' && e.range.columnStart == 23){
      Logger.log("should be running email prompt");
      emailPrompt(); 
   }
 }

function emailPrompt() {
  Logger.log("Reaching email prompt");
  var ui = SpreadsheetApp.getUi();
  
  Logger.log("ui");
  var result = ui.prompt(
      'Email Template',
      'Please edit the email:',
      ui.ButtonSet.OK_CANCEL);

      Logger.log("result");
      
      
  // Process the user's response.
  var button = result.getSelectedButton();
  var text = result.getResponseText();
  if (button == ui.Button.OK) {
    // User clicked "OK".
    //Insert Code to select email
    ui.alert('Your name is ' + text + '.');
  } else if (button == ui.Button.CANCEL) {
    // User clicked "Cancel".
    ui.alert('Email cancelled');
  } else if (button == ui.Button.CLOSE) {
    // User clicked X in the title bar.
    ui.alert('Email cancelled.');
  }
}

日志:

[20-07-10 15:21:09:472 CDT] onEdit
[20-07-10 15:21:11:198 CDT] should be running email prompt
[20-07-10 15:21:11:199 CDT] Reaching email prompt
[20-07-10 15:21:11:201 CDT] ui

编辑:设置可安装触发器

编辑 2: 设置可安装触发器有效,非常感谢!我现在唯一的问题是这张表是给我工作的公司的,他们想拥有可安装的触发器。但是,提示似乎只显示给拥有触发器的人。如果其他人尝试编辑函数并打开提示。出现以下错误: You do not have permission to call prompt at emailPrompt(onEdit:54) at onEdit_sendEmail(onEdit:42) –

所以,现在我必须弄清楚如何制作它,以便此触发器适用于有权访问电子表格的任何人。谢谢!

【问题讨论】:

  • 使用简单触发器触发的函数必须在 30 秒内完成。 Simple trigger restrictions
  • 您可以尝试安装触发器,但请注意鲁本在下面的回答中的警告。
  • 错误率显示100%。执行页面上记录了哪些错误?
  • 您无权在 onEdit_sendEmail(onEdit:42) 的 emailPrompt(onEdit:54) 处调用提示
  • 好的,我实际上是通过登录我公司的 Gmail 帐户(拥有触发器)让它工作的。有什么办法可以让不拥有触发器的其他所有人都可以毫无问题地运行它?

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


【解决方案1】:

简单的触发器有几个限制。请改用可安装的触发器。

注意:对于将由可安装触发器调用的函数,请勿使用保留函数名称(onOpenonEditonSelectionChangedoPostdoGetonInstall)。同一事件可能会调用两次函数,而其他函数可能会被不同的事件调用,这可能会造成混淆。

【讨论】:

    猜你喜欢
    • 2011-02-17
    • 1970-01-01
    • 2019-10-11
    • 2012-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    相关资源
    最近更新 更多