google-apps-script - 用于触发单元格值更改的 Google App 脚本

标签 google-apps-script google-sheets triggers

我是一个新手,一直在使用一个简单的应用程序脚本来发送带有 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);
}

最佳答案

回答:
您可以使用 onEdit() 执行此操作和一个条件。
代码示例:

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()
  }
}
此函数的概要:
  • 定义要检查的特定单元格的工作表和 A1 表示法
  • 获取刚刚编辑的单元格的工作表和 A1 表示法
  • 如果 Sheet 或 Cell 不是定义的特定单元格,则返回(使用 De Morgan's law )
  • 运行 sendEmail()如果单元格和工作表正确

  • 引用:
  • Event Objects | Apps Script | Google Developers
  • Simple Triggers | Apps Script | Google Developers
  • De Morgan's laws - Wikipedia
  • 关于google-apps-script - 用于触发单元格值更改的 Google App 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65333964/

    相关文章:

    google-apps-script - 需要工具提示 : Change google sheet existing data into DataTable

    javascript - JS 从二维数组中删除条目

    mysql - 仅在对数据进行特定更改时触发

    javascript - 通过 1.2.6 上的脚本事件触发 Jquery 自动完成

    javascript - 在 Google Apps 脚本中将字符串转换为正确/标题大小写

    google-apps-script - 使用新打开的彭博数据的谷歌脚本?

    google-apps-script - Google 脚本 - 在邮件应用程序中更改 "From"

    google-sheets - Google Sheets CountIFS(range, "*string*") 但获取精确的字符串

    r - 当 "Sign in with Google temporarily disabled for this app"时你如何进行?

    postgresql - 将 UPDATE 传播到动态确定的表