Textfinder和IF

时间:2019-09-16 22:05:28

标签: if-statement google-apps-script

我有一段代码是从另一个可以正常工作的代码中拼凑而成的。这样做是使用文本查找器在列中搜索值,在这种情况下,该值是昨天的日期,如果未找到任何内容,则应发送电子邮件。

function findAndSendMail() {
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('FormResponses');
  var ss2 = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('AlertDate');
  var search = ss2.getRange("B2").getValue(); //cell has yesterday's date
  var lastRow = ss.getLastRow();
  var range = ss.getRange(1,4,lastRow); //define range for column D, column D contains dates
  //find all occurrences of search key in column D and push range to array
  var ranges = range.createTextFinder(search).findAll();

if (ranges!==null) {
  var message = '';
  }else {
  var message = 'Test';
  }

  var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("EmailGroup").getRange("A1");
  var emailAddress = emailRange.getValues();

  var subject = 'Subject';
  var link = "blahblahblah"

  if (message) {
    MailApp.sendEmail(emailAddress, subject,  '**This is an automated message**\n\n' + message + '\n\n**This is an automated message**\n' + link);
  }
}

如您所见,它应该搜索D列,然后,如果找到了什么,则message变量将为空白,否则,如果找不到任何内容,它将向所选的电子邮件地址发送一封电子邮件。我不确定文本查找器的结果如何与此一起工作,我认为它的编写方式不正确。非常感谢您的帮助,由于我的公司不允许在域外进行共享,因此我无法共享有问题的文档。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试一下:

您将需要更新我将其移动到行注释末尾的工作表名称

function findAndSendMail() {
  var ss=SpreadsheetApp.getActive()
  var sh1=ss.getSheetByName('Sheet1');//FormResponses
  var sh2=ss.getSheetByName('Sheet2');//AlertDate
  var d1=new Date(sh2.getRange("B2").getValue()); //cell has yesterday's date
  var d2=new Date(d1.getFullYear(),d1.getMonth(),d1.getDate()).valueOf();
  var rg1 = sh1.getRange(1,4,sh1.getLastRow(),1);
  var vA=rg1.getValues().map(function(r){
    var dt=new Date(r[0]);
    var dtv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
    return dtv;
  });
  if(vA.indexOf(d2)==-1) {
    var message='test';
    var emailAddress = ss.getSheetByName("Sheet3").getRange("A1").getValue();//EmailGroup
    var subject = 'Subject';
    var link = "blahblahblah"
  }
  if (message) {
    MailApp.sendEmail(emailAddress, subject,  '**This is an automated message**\n\n' + message + '\n\n**This is an automated message**\n' + link);
    //SpreadsheetApp.getUi().alert('I found something');//just for testing
  }
}

如果找不到昨天,此版本将发送电子邮件。

回答您的最后一个问题:

function findAndSendMail() {
  var ss=SpreadsheetApp.getActive()
  var sh1=ss.getSheetByName('Sheet1');//FormResponses
  var sh2=ss.getSheetByName('Sheet2');//AlertDate
  var d1=new Date(sh2.getRange("B2").getValue()); //cell has yesterday's date
  if(isDate(d1)) {
    var d2=new Date(d1.getFullYear(),d1.getMonth(),d1.getDate()).valueOf();
    var rg1 = sh1.getRange(1,4,sh1.getLastRow(),1);
    var vA=rg1.getValues().map(function(r){
      var dt=new Date(r[0]);
      var dtv=new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
      return dtv;
    });
    if(vA.indexOf(d2)==-1) {
      var message='test';
      var emailAddress = ss.getSheetByName("Sheet3").getRange("A1").getValue();//EmailGroup
      var subject = 'Subject';
      var link = "blahblahblah"
      }
    if (message) {
      MailApp.sendEmail(emailAddress, subject,  '**This is an automated message**\n\n' + message + '\n\n**This is an automated message**\n' + link);
      //SpreadsheetApp.getUi().alert('I found something');//just for testing
    }
  }else{
    SpreadsheetApp.getUi().alert('Data is sheet2!B2 is not a date')
    return;
  }
}

function isDate(date){ 
  return(Object.prototype.toString.call(date) === '[object Date]'); 
}