填充某些列时向某些用户发送自动电子邮件 - 谷歌表

问题描述

当特定列中的单元格已填充到 Google 表格中时,我正尝试向某些用户发送电子邮件通知。我尝试使用推荐的脚本,但是当我执行脚本时,会为电子表格中的每一行发送一封电子邮件。 它应该如何工作: 在我的电子表格中,有 44 列(从 A 到 AR),当指定列中的特定单元格已被填充时,我想向特定人员发送电子邮件。例如:当 V 列中的单元格已被填充时,我想向 Abc@gmail.com 发送电子邮件。并希望在填充 AB 列中的单元格时向 bcd@gmail.com 发送电子邮件,依此类推。我还希望正文电子邮件包含用户需要知道更改的哪一行(但我不知道此脚本)。

有人能解释一下为什么我每行都收到一封电子邮件并且脚本不起作用。我看过其他帖子,但没有运气。真的很感激一些帮助。这是我的脚本。

function SendEmail() {
var sheet = SpreadsheetApp.getActiveSheet();
var lr = sheet.getLastRow();
for (var i=6;i<=lr;i++){     
   var rsh = sheet.getRange(i,21); 
   var wentao = sheet.getRange(i,27);
   var retail = sheet.getRange(i,28);
    

  sheet.getRange
  //Fetch values for each row in the Range. 
   var datarsh = rsh.getValues();   
     if(datarsh>0){
    var row = datarsh[i];
    var emailAddress = "abc@gmail.com";
    var message = "Hi RSH,ASM has filled a new Mi Shop request. Need your approval on the Mi Shop Request";
    var subject = "Pitch Mi Approval - Notification";
    MailApp.sendEmail(emailAddress,subject,message);
     }
   
    var datawentao = wentao.getValues();
    if (datawentao>0){   
    var row = datawentao[i];
    var emailAddress = "bcd@gmail.com";
    var message = "Hi Wentao,need your approval on Mi Shop Request in column ";
    var subject = "Pitch Mi Approval - Notification";
    MailApp.sendEmail(emailAddress,message);
  }
  
    var dataretail = retail.getValues();
    if(dataretail>0){   
    var row = dataretail[i];
    var emailAddress = "cde@gmail.com";
    var message = "Hi Retail Team,Wentao has approved Mi Shop Request. Update the expansion progress in column ";
    var subject = "Pitch Mi Approval - Notification";
    MailApp.sendEmail(emailAddress,message);
  }
}
}

解决方法

试试这个:

function SendEmail() {
  const sh = SpreadsheetApp.getActiveSheet();
  const vs = sh.getRange(6,20,sh.getLastRow() - 5,9).getValues();
  vs.forEach((r,i) => {
    if (r[2]) {
      MailApp.sendEmail("abc@gmail.com","Pitch Mi Approval - Notification","Hi RSH,ASM has filled a new Mi Shop request. Need your approval on the Mi Shop Request");
    }
    if (r[7]) {
      MailApp.sendEmail("bcd@gmail.com","Hi Wentao,need your approval on Mi Shop Request in column ","Pitch Mi Approval - Notification");
    }
    if (r[8]) {
      MailApp.sendEmail("cde@gmail.com","Hi Retail Team","Wentao has approved Mi Shop Request. Update the expansion progress in column ","Pitch Mi Approval - Notification")
    }
  });
}