如何在Google表格上发送条件电子邮件警报?

时间:2019-04-29 11:46:57

标签: google-apps-script google-sheets

我正在Google工作表上设置一个电子邮件警报,如果其中一栏的值低于2,我会在我的邮件中收到电子邮件警报。 我有多个域,每天检查域的到期日期非常繁琐。我创建了一个表格,其中放置了域名,注册商,托管的,今天的日期,到期日期,到期的剩余天数。现在,我想在“剩余剩余天数”列上创建一个警报,以便当剩余天数少于2天时,它将警报电子邮件发送到我的电子邮件地址列表中。

我已经做过的工作是获取一个单元格值的电子邮件,但我想做的是获取整列或列值数量的电子邮件。

 function CheckSales() {
  // Fetch the values
  var domainexpireRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("domain list").getRange("F2"); 
  var domainexpire = domainexpireRange.getValues();

  // Check domain expiring
  if ( domainexpire < 2){
    var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Company emails").getRange("B2:B4");
    var emailAddress = emailRange.getValues();

    // Send Alert Email.
    var message = '2019 smtp Domain Expiring in two days. Please check the sheet domain sheet '; // Second column
    var subject = '2019 smtp Domain Expiring';
    MailApp.sendEmail(emailAddress, subject, message);

  }
}

我有一个包含多个行和列的工作表,我要做的是检查F列,如果F列中的任何值小于2,然后向我的电子邮件地址发送警报电子邮件。 如果我将代码复制粘贴多次并更改“ getRange(“ F2”);“,则我的代码运行良好。到F2,F3,.... F100 但这不是编写代码的好方法。谁能告诉我是否可以编辑一些代码并得到结果。

我尝试使用“ getRange(” F2:F“);” &getRange(“ F2:F54”);但无法解决。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

尝试使用for语句在整个工作表中循环,以下代码应该起作用:

function checkSales() {

  // Fetch the values    
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getSheetByName("domain list");
  var dataRange = sheet.getDataRange();
  var data = dataRange.getValues();

  // loop through each row starting at row 2
  for (var i = 1; i < data.length; i++) {
    var domainExpire = data[i][5];

    // Check domain expiring
    if (domainExpire < 2) {
      var emailRange = spreadsheet.getSheetByName("Company emails").getRange("B2:B4");
      var emailAddress = emailRange.getValues();

      // Send Alert Email.
      var message = '2019 smtp Domain Expiring in two days. Please check the sheet domain sheet '; // Second column
      var subject = '2019 smtp Domain Expiring';

      MailApp.sendEmail(emailAddress, subject, message); 
    }
  }
}

答案 1 :(得分:0)

尝试一下:

function CheckSales() {
  var ss=SpreadsheetApp.getActive();
  var sh=ss.getSheetByName('domain list');
  var domainexpireRange=sh.getRange(1,6,sh.getLastRow()-1,1);
  var domainexpire=domainexpireRange.getValues();
  for(var i=0;i<domainexpire.length;i++) {
    // Check domain expiring
    if (domainexpire[i][5]<2){
      var emailRange=ss.getSheetByName("Company emails").getRange("B2:B4");
      var emailAddress=emailRange.getValues().map(function(r){return r[0];}).join(',');
      // Send Alert Email.
      var dateString=Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy");
      var message=Utilities.formatString('%s smtp Domain Expiring in two days. Please check the sheet domain sheet.',dateString);
      var subject=Utilities.formatString('%s smtp Domain Expiring',dateString);
      MailApp.sendEmail(emailAddress, subject, message);
    }
  }
}