更改特定单元格时发送电子邮件

时间:2019-08-04 17:36:37

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

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

  • 发送电子邮件到电子邮件列表
  • 电子邮件的标题是单元格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");
    }
  }

非常感谢您的帮助和建议。

1 个答案:

答案 0 :(得分: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列中,以及所做的更改是将其设置为“完成”还是“注意”。如果更改是必需的,它将向该行的电子邮件发送一封电子邮件,其内容在正文行中。