Google App 脚本触发单元格值更改

The*_*als 7 triggers google-sheets google-apps-script

我是一个新手,一直在使用一个简单的应用程序脚本来发送带有 onEdit 和 onChange 触发器的电子邮件。但是,我的工作表有十多个工作表,任何工作表中的任何编辑/更改(由我或通过计算完成)都会发送电子邮件,从而导致意外的垃圾邮件!为了避免这种情况,如果我可以使用一些代码仅根据特定工作表中特定单元格值的任何更改发送电子邮件,我的问题就会得到解决。我的外发电子邮件很短,整封邮件都在一个单元格 (C2) 中。如果我可以添加一行代码来监视单元格 C2 中的任何更改,并在发生更改时发送电子邮件,就是这样!我就完了。我的脚本如下:

function sendEmail(){
var ss = SpreadsheetApp.getActiveSpreadsheet()
var sheet1=ss.getSheetByName('Email');
var emailAddress = sheet1.getRange(2,1).getValue();
var subject = sheet1.getRange(2,2).getValue();
var message = sheet1.getRange(2,3).getValue();
MailApp.sendEmail(emailAddress, subject, message);
}
Run Code Online (Sandbox Code Playgroud)

Raf*_*rmo 9

回答:

您可以使用onEdit()and 条件来完成此操作。

代码示例:

function onEdit(e) {
  const specificSheet = "Email"   // for example
  const specificCell = "C2"       // for example

  let sheetCheck = (e.range.getSheet().getName() == specificSheet)
  let cellCheck = (e.range.getA1Notation() == specificCell)

  if (!(sheetCheck && cellCheck)) {
    return
  }
  else {
    sendEmail()
  }
}
Run Code Online (Sandbox Code Playgroud)

该函数的概要:

  • 定义要检查的特定单元格的工作表和 A1 符号
  • 获取刚刚编辑的单元格的Sheet和A1符号
  • 如果工作表或单元格不是定义的特定单元格,则返回(使用德摩根定律
  • sendEmail()如果单元格和工作表正确则运行

参考: