根据条件发送电子邮件

Send email based on condition

提问人:Ademola 提问时间:9/30/2023 更新时间:9/30/2023 访问量:63

问:

我已将一个数字数组定义为变量,如果该数组中的数字为 >= 45,我想发送电子邮件。但是,当我运行代码时,无论是否满足我的条件,它都会发送电子邮件。如何让它仅在满足条件时发送电子邮件?请参阅以下脚本作为参考:

function sendEmail1(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet4 = ss.getSheetByName('Dewar ID');
var sheet5 = ss.getSheetByName('Notification Settings');
var email_listing = sheet5.getRange(5,1).getValue();
var subject = sheet5.getRange(3,2).getValue();
var message = sheet5.getRange(3,3).getValue();
var todaysDate = sheet4.getRange(1,8).getValue();
var daysPastService = sheet4.getRange("E3:E60").getValues();

if(daysPastService >= 45)
{return true;}
GmailApp.sendEmail(email_listing, subject, message);
}
if-语句 google-apps-script 条件语句 sendmail

评论


答:

0赞 Cooper 9/30/2023 #1

试试这个:

function sendEmail1() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet4 = ss.getSheetByName('Dewar ID');
  var sheet5 = ss.getSheetByName('Notification Settings');
  var email_listing = sheet5.getRange(5, 1).getDisplayValue();
  var subject = sheet5.getRange(3, 2).getDisplayValue();
  var message = sheet5.getRange(3, 3).getDisplayValue();
  var o = sheet4.getRange("E3:E60").getValues().flat().filter(e => e >= 45).filter(e => e);
  if (o && o.length > 0) {
    GmailApp.sendEmail(email_listing, subject, message);
  }
}

评论

0赞 Ademola 9/30/2023
无论是否满足条件,它仍会发送电子邮件。你的剧本是什么意思?e
0赞 Cooper 9/30/2023
它不能,你一定没有正确实现它
0赞 Cooper 9/30/2023
查看 Javascript 参考中 Arrays 的过滤器方法,您将看到 e 是什么。
0赞 Andrew 9/30/2023 #2

您的“GmailApp.sendEmail(email_listing, subject, message);”似乎不在条件范围内。而且,daysPastService 变量是一个数组,因此需要遍历每个单元格。

尝试。。。

var greaterThan45 = false;
for(var i=0; i<daysPastService.length; i++) {
  if(daysPastService[i] >= 45) {
    greaterThan45 = true;
  }
}
if(daysPastService) {  //if it's been set to true, because any of the cells were >= 45
  GmailApp.sendEmail(email_listing, subject, message);
  return true;
}

评论

0赞 Ademola 9/30/2023
当我尝试这种方法时,即使程序运行,即使满足条件也不会发送电子邮件。但是,我尝试将特定单元格设置为变量(例如 ),条件可以发送电子邮件。似乎当我有一个数组时,它无法区分哪个数字是 >= 条件。有没有办法让它识别数组中的条件,或者它只是一个单元格?var dewar1 = sheet4.getRange(3,5).getValues();
0赞 Andrew 9/30/2023
你是对的;我错过了你的变量(daysPastservice)是一个数组,所以我没有遍历它。我已经用迭代更新了它,以检查是否有任何单元格是 >= 45。