首页 > 解决方案 > 更改特定单元格时发送电子邮件

问题描述

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

到目前为止,我已经创建了一个脚本来向在特定工作表中创建的人员列表发送电子邮件。但我正在努力使用 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");
    }
  }

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

标签: google-apps-scriptgoogle-sheetsgoogle-sheets-formula

解决方案


尝试这个:

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 列中,以及更改是否将其设置为“完成”或“注意”。如果更改符合要求,它将向该行的电子邮件发送一封电子邮件,内容在正文行。


推荐阅读