【问题标题】:Send an email when a specific cell is changed更改特定单元格时发送电子邮件
【发布时间】:2019-08-04 17:36:37
【问题描述】:

我正在尝试构建一个项目跟踪器,它将

  • 向电子邮件列表发送电子邮件
  • 电子邮件的标题是单元格 A1 中的文本
  • 电子邮件正文是单元格 D1 中的文本
  • 触发条件是单元格 E1 的值更改为“完成”或“注意”

到目前为止,我已经创建了一个脚本来向特定工作表中创建的人员列表发送电子邮件。但我正在努力使用 OnEdit 功能以及如何在发送电子邮件时将单元格链接成单行。电子表格将有许多行引用不同的项目。

function sendEmails(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Email");
  var lr = ss.getLastRow();
  for (var i = 2;i<=lr;i++){
    var currentEmail = ss.getRange(i, 1).getValue();
    var currentClassTitle = ss.getRange(i, 3).getValue();
    MailApp.sendEmail(currentEmail,currentClassTitle,"Project complete");
    }
  }

非常感谢任何帮助和建议。

【问题讨论】:

  • 那么您想使用onEdit 触发器检查E 列中的单元格是否更改为“完成”或“注意”以发送包含相应行数据的电子邮件?跨度>
  • 欢迎。这个问题已经被问了很多很多次了,并且有一个合理的期望是你会做一些初步的研究。我可以恭敬地建议你谷歌“google sheet script email cell change site:.stackoverflow.com”来检查一些先例。完成此操作后,如果您仍有问题,请将其作为新问题提出。
  • 参考stackoverflow.com/questions/57315867的例子如何通过事件对象使用onEdit(e)。

标签: google-apps-script google-sheets google-sheets-formula


【解决方案1】:

试试这个:

function onEdit(e){
  var ss = SpreadsheetApp.getActiveSheet(); // The sheet.
  var data = ss.getDataRange().getValues(); // The data in all the cells
  var row = e.range.getA1Notation().substring(1);
  var email = ss.getRange("A"+row).getValue();
  var body = ss.getRange("D"+row).getValue();

  if (e.range.getA1Notation().substring(0,1) == "E"){
    if (data[row-1][4] == "Complete" || data[row-1][4] == "Attention"){
      MailApp.sendEmail(email,currentClassTitle,body);
    }
  }
}

编辑

我修复了我的代码,它用于发送不必要的电子邮件,并且无法正确检查哪个单元格已被修改。新代码将检查编辑的单元格是否在 E 列以及更改是否设置为“完成”或“注意”。如果更改符合要求,它将向该行的电子邮件发送一封电子邮件,内容在正文行。

【讨论】:

  • @Tedinoz 你是对的,感谢您的检查,我会更新答案。
  • 两个事件对象是1)编辑的范围和2)编辑的值;运行Logger.log(JSON.stringify(e)); 以查看所有值。尽可能使用这些(比如if (e.range.columnStart == 5){if (e.range.value == "Complete" || e.range.value == "Attention"){)不是更好吗?在切线上,在评估“IF”语句之前没有必要getValues;即使这样,也只需要更改行中的getValues()。例如var data = ss.getRange(e.range.rowStart,1,1,ss.getLastColumn()).getValues();
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多