当前位置: 首页 > 知识库问答 >
问题:

Google Apps Script-如果cell='yes',使用onEdit运行脚本

潘鸿文
2023-03-14

我很难理解谷歌应用程序脚本中的onEdit()函数

我有一个Google工作表,它有一个主选项卡和4个单独的选项卡,如果用户在任何单独工作表的“发送电子邮件”列中选择“是”,我需要它来发送电子邮件。我有一个函数可以很好地做到这一点,在调试器中,我将把它粘贴到这里:(我知道它可能会被简化/缩减:)

代码:

 function triggers() {
 //Hold all values of selected sheet
 var zy = holdingData.values;

 for (var j = 0; j < zy.length; ++j) {
     //Get the UI functions and store them in a variable, used for prompts later in the script
     var ui = SpreadsheetApp.getUi();

     if (zy[j][9] === 'Yes') {

         //Pull values for later use
         holdingData.selVals.push([zy[j][0], zy[j][1], zy[j][2], zy[j][3], zy[j][4], zy[j][5], zy[j][7], zy[j][23], zy[j][24], zy[j][25]]);

         //Pull Teacher email from Master column B
         holdingData.teacherEmail.push(holdingData.selVal[j][7]);

         //Assign email based on contents of column X
         if (holdingData.selVals[j][8].toLowerCase() === "miranda") {
             holdingData.counselorEmail.push("FakeEmail1@Madeup.com");
         } //.....Other cases after this, cut for length

         //Assign subject line for specified individual
         holdingData.subject.push("Referral: " + holdingData.selVals[j][0] + " " + holdingData.selVals[j][1]);

         //Store columns C,D, and E in 1 variable string for each student
         holdingData.actionsTaken.push(holdingData.selVals[j][2] + ", " + holdingData.selVals[j][3] + ", " + holdingData.selVals[j][4]);

         //Assign Email message contents for specified individual sheet
         holdingData.message.push("The referral submitted for " + holdingData.selVals[j][0] + " " + holdingData.selVals[j][1] + " has been completed. The following action(s) were taken: " + holdingData.actionsTaken[j] + ", Please email the member of the discipline team who handled the referral if you have any questions or concerns, at: " + holdingData.counselorEmail[j] + ".");

         //Prompt user to confirm they would like to send the emails
         var response = ui.prompt('Are you sure you would like to send emails to the selected staff memebers?', ui.ButtonSet.YES_NO);
         if (response === 'YES') {
             //Send Message to Referring teacher
             MailApp.sendEmail(holdingData.teacherEmailMir[j], holdingData.subjectMir, holdingData.messageMir);

             //Send Message to Counselor assigned to student
             MailApp.sendEmail(holdingData.counselorEmailMir[j], holdingData.subjectMir, holdingData.messageMir);
         } else {return;}
     }
 }

}

我剪掉了一些长度,但我想做的核心就在那里。如果我用onEdit()包装整个事情,它就不起作用了。如果我应用OnEdit()作为一个简单的触发器(我相信),它将在每次编辑任何工作表时触发此脚本。我试过其他一些方法,但运气不好。我不明白什么?:)

共有1个答案

阎德宇
2023-03-14

什么都不会发生,因为您试图发送一封带有简单onEdit()触发器的电子邮件。在这里的留档限制下,它甚至被作为一个例子

  • 他们无法访问需要授权的服务。例如,简单触发器无法发送电子邮件,因为Gmail服务需要授权,但简单触发器可以使用匿名语言服务翻译短语
 类似资料:
  • 我是新来的谷歌工作表脚本和卡住试图做以下事情。我有2列:C包含开始时间码,D包含结束时间码。第三列(F)包含从开始时间码和结束时间码产生的电影提示的长度。由于时间码来自脚本,因此包含结果的单元格不能导出为其他格式。因此,我试图创建第四列,将列F的结果打印为值。我设法写了一个小脚本,可以做到这一点。它看起来像这样: 问题是,当我编辑C或D中的任何时间码时,它不会自动执行。 所以我试了一下: 它没有给

  • Pm2默认的start命令使用Python2运行脚本。如何让它使用python3运行脚本?假设我的脚本名为app.py。

  • 出于学习目的,我正在尝试在GCP上安装和设置我自己的Kubernetes集群。 我想在GCP上为我的实例提供一个引导脚本。 这是我的config 我在应用terraform时遇到了这个问题 错误:无法打开脚本“sudo apt get update” sudo apt-get安装 apt-transverage-https ca-证书 curl gnupg-Agent software-Prope

  • 问题内容: 我已经准备好具有功能流程的Selenium自动化脚本,现在我想将这些脚本与JMeter集成以进行负载测试。 那可能吗? 如果是这样,如何将两者融合? 我的首要目标是使用硒运行自动化脚本,而不是在jmeter中运行这些脚本以进行负载或性能测试。 问题答案: JUnit请求采样器 如果您想重用已经自动化的(Java)Selenium场景,而不是为WebDriver Sampler重写JS脚

  • 问题内容: 我想尝试使用npm为Web应用程序运行各种构建任务。我知道我可以这样添加一个字段来做到这一点: 当您使用带有许多选项的更复杂的命令时,这变得很笨拙。是否有可能将这些命令移至bash脚本或类似的东西?就像是: 在文件中的哪里执行命令? 阅读这篇文章似乎是这样,但是我不清楚我应该在哪里放置文件或者丢失了什么。 问题答案: 完全有可能… 另外,请确保在bash文件的顶部放置一个哈希爆炸 还请

  • 问题内容: 我无法让npm工作。我的package.json文件有 我在与console.logs相同的文件夹中有一个build.js文件。 当我跑步 我得到错误 如果我移动build.js文件并更改package.json文件以包含一个子文件夹 然后我得到错误 怎么了 我正在复制示例文档。 问题答案: 要么 注意: 您缺少和节点命令 文件夹结构很好: