繁体   English   中英

Google Apps 脚本 - 根据单元格中的值发送 Email

[英]Google Apps Script - Send Email based on value in cell

我是 Google App Scripts 的新手,并且有一个包含三列的电子表格:名称、过期和上次联系: https://docs.google.com/spreadsheets/d/1W04JiFZwpGCD-qddUkNJ9xQ1xiYwZnGhissudF1EvxM/edit?usp=sharing

我想向自己发送一个 email 提醒,其中包含 B 列中逾期值的任何人的姓名。

到目前为止,我只能编写一个脚本,将 email 发送给我自己的第 2 行。我不知道如何让脚本循环遍历 B 列中的值。

这是我的脚本:

function sendEmail() {
  
  var overdueRange = SpreadsheetApp.getActiveSpreadsheet().getRange("B2"); 
  var overdueValue = overdueRange.getValue();
  if (overdueValue === "Overdue"){
    var nameRange = SpreadsheetApp.getActiveSpreadsheet().getRange("A2");
    var name = nameRange.getValues();
    var message = 'Reach out to ' + name 
    var subject = 'Reach out to this person.'
    MailApp.sendEmail('myemail@email.com', subject, message);
    }
}

sendEmail()

解释:

只需几点说明该过程:

  • 我假设您正在从脚本编辑器执行sendEmail() 这样,由于您在 function 之外还有sendEmail() ,因此您最终将调用sendEmail()两次。 删除 function 的“全局”调用,并从脚本编辑器中仅调用sendEmail()

  • 不建议在电子表格object 上应用getRange 按名称或 position 定义特定工作表。 在下面的示例脚本中,我按名称 ( Sheet1 ) 定义工作表。 将该名称更改为您的实际情况。

  • 代码中的name是二维数组,而不是单个值。 请注意这一点,因为这不是正确的方法。

  • 在下面的脚本中,我定义了一组AB列。 名称在A列中定义,过期状态在B列中定义。 通过这种方式,您可以迭代此数组,并通过访问数组本身在每次迭代中获取单个值。 我使用了forEach ,但可以随意使用您自己的迭代方法。

解决方案:

function sendEmail() {
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet1'); // change Sheet1 to the name of your sheet
  const data = sh.getRange('A2:B'+sh.getLastRow()).getValues();
  data.forEach(r=>{
     let overdueValue = r[1];  
     if (overdueValue === "Overdue"){
         let name = r[0];
         let message = 'Reach out to ' + name;
         let subject = 'Reach out to this person.'
         MailApp.sendEmail('myemail@email.com', subject, message); 
     }
  });  
}

适用于脚本的工作表:

例子

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM