在列中查找文本并在找到时仅发送一次电子邮件

Find text in column and send email only one time when found

我想制作一个 google 脚本来搜索 A 列中的文本(在单元格 C2 中给出),并在找到文本时向单元格 C3 中给出的地址发送电子邮件(仅一次) .

A 列存在来自 importXML 公式的文本结果。

我找了又找,但我找不到它,而且我是一个编码新手,甚至无法开始:(非常感谢任何帮助。

下面是如何完成此操作的示例,我使用背景颜色标记 A 列中已发送邮件的单元格(以避免多次发送)。

它会向电子表格用户和 C3 中的地址发送邮件,但您当然可以根据需要调整它。

// test sendMailOnCondition


function sendMailOnCondition(){
  var sh = SpreadsheetApp.getActiveSheet();
  var condition = sh.getRange("C2").getValue();
  var email = sh.getRange("C3").getValue();
  Logger.log(condition);
  var valuesInColumnA = sh.getRange("A1:A").getValues();
  var colorsInColumnA = sh.getRange("A1:A").getBackgrounds();
  for (var n=0;n<valuesInColumnA.length;n++){
    Logger.log(colorsInColumnA[n][0]);
    Logger.log(valuesInColumnA[n][0]);
    if(valuesInColumnA[n][0]==condition && colorsInColumnA[n][0]=='#ffffff'){
      colorsInColumnA[n][0]="#DDD";
      MailApp.sendEmail(Session.getActiveUser().getEmail(),"test mail","Row number "+Number(n+1)+" has value "+condition);// remove this line if you don't need it
      MailApp.sendEmail(email,"test mail","Row number "+Number(n+1)+" has value "+condition);
    }
  }
  sh.getRange("A1:A").setBackgrounds(colorsInColumnA);// update cells colors
}

EDIT :为了安全和避免在单元格 C2 为空时错误地发送许多电子邮件(我在测试时刚好发生这种情况 ;-) 您可以将第三个条件添加到'if' 语句:condition !=""

该行变为:

if(condition !="" && valuesInColumnA[n][0]==condition && colorsInColumnA[n][0]=='#ffffff'){