在所选数据范围内没有数据时不发送电子邮件

时间:2019-09-10 07:54:18

标签: google-apps-script google-sheets

我有一个代码,该代码从定义范围的Google表格发送数据。该数据范围将使用公式自动填充。 一旦这将自动填充并填充数据,然后将发送我已为其设置触发器的电子邮件。

我有一个脚本,该脚本正在发送包含范围内数据的电子邮件,但只想在字段中包含数据时发送电子邮件。

function email() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var bulk = ss.getSheetByName("Bulk");
  var lastrow = bulk.getLastRow();
  var data = bulk.getRange(1, 2, lastrow,2).getValues();  
  var tableData = '<TABLE style="border-collapse:collapse;"border = 1 cellpadding = 5 ><th style=color:blue>First data</th><th style=color:green>Second data</th>'

  for (var i =1; i < data.length; i++) {
    var d1=data[i][0]==''?'empty':data[i][0];
    var d2=data[i][1]==''?'empty':data[i][1];
    tableData+="<tr><td style=color:blue>"+d1+"</td><td style=color:green>"+d2+"</td></tr>"
  }
  tableData+="</table>";

  MailApp.sendEmail(Session.getActiveUser().getEmail(),
                    "Your report", "html only", {htmlBody: tableData});
}

一旦以上脚本运行,那么它应该仅在没有数据的情况下发送电子邮件。数据将使用公式填充。我将使用时间触发器来安排运行时间。

2 个答案:

答案 0 :(得分:0)

在代码中包含一个布尔变量empty,如果在数据中找到内容,该变量将被设置为false:

  var empty=true;
  for (var i =1; i < data.length; i++) {
    if(data[i][0]!=""||data[i][1]!=""){
      empty=false;
    }
    var d1=data[i][0]==''?'empty':data[i][0];
    var d2=data[i][1]==''?'empty':data[i][1];
    tableData+="<tr><td style=color:blue>"+d1+"</td><td style=color:green>"+d2+"</td></tr>"
  }
  tableData+="</table>";
  if(empty==false){
   Logger.log('not empty');
   MailApp.sendEmail(Session.getActiveUser().getEmail(),
                    "Your report", "html only", {htmlBody: tableData});
  }

答案 1 :(得分:0)

我用下面的代码弄清楚了,只有当该列中存在数据时,它才会发送电子邮件。

function CCemail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var bulk = ss.getSheetByName("testRollcallremaining");
  var lastrow = bulk.getLastRow();
  var data = bulk.getRange(1, 4, lastrow,2).getValues();  
  var tableData = '<TABLE style="border-collapse:collapse;"border = 1 cellpadding = 5 >'
  var rollcal_len=bulk.getRange("D1:D").getValues().filter(String).length;

  var rollcall_data=bulk.getRange("D1:D"+rollcal_len).getValues();
  Logger.log(rollcall_data)
  if(rollcal_len>1){
  for (var i =0; i < rollcal_len; i++) {
    var d1=rollcall_data[i];

    tableData+="<tr><td style=color:blue>"+d1+"</td></tr>"
  }
  tableData+="</table>";




  MailApp.sendEmail(Session.getActiveUser().getEmail(),
                    "Rollcoll Pending List", "html only", {htmlBody: tableData});
  }else{ Logger.log("Roll bCk Data is 0")}
}