Отправить письмо на основе значения ячейки (дата) - PullRequest
1 голос
/ 09 июля 2019

Я огляделся по сторонам, у меня есть кусочки, но я не могу собрать головоломку.

Мне нужно отправить электронное письмо за 90 дней до даты, указанной в списке ячеек в том же столбце.

Вот как выглядят мои данные:
enter image description here

Например, скрипт должен отправить электронное письмо от 01.08.1919 со следующим текстом:

Напоминание о дне рождения Джон Доу 01/11/2019

Ответы [ 2 ]

1 голос
/ 09 июля 2019

Попробуйте это:

function send(){
  var ss = SpreadsheetApp.getActiveSheet();
  var firstDate = new Date(); // today

  var data = ss.getRange("A6:C" + ss.getLastRow()).getValues(); // gets the name and the bday 
  for(var i = 0; i < data.length; i++){
    if (time(firstDate, data[i][2]))
        Logger.log("SEND"); // Here you would send the email.
    else
      Logger.log("NOT SENT");
  }
}

function time(firstDate, secondDate){
  var oneDay = 24*60*60*1000; // hours*minutes*seconds*milliseconds

  var diffDays = Math.round(Math.abs((firstDate.getTime() - secondDate.getTime())/(oneDay)));
  if (diffDays <= 90)
    return true;
  else 
    return false;
}

Здесь , где я нашел, как рассчитать разницу во времени. И мой код является сборкой, если у вас есть список, начинающийся с A6.

0 голосов
/ 11 июля 2019

Я использую этот скрипт для оповещения об истечении срока действия банковских сертификатов, вы можете легко адаптироваться к вашей проблеме, извините, но у меня нет времени на перевод.

enter image description here

function Vencimiento() {
  var spreadsheet = SpreadsheetApp.getActive();
  var sheet = spreadsheet.getActiveSheet();
  var lastRow = sheet.getLastRow();
  lastRow = lastRow-4;
  var rango = sheet.getRange(5, 2, lastRow, 4); 
  var valores = rango.getValues();
  var inicio = Date.now();
  for(var i = 0; i < lastRow; i++){ 
    var vence = Date.parse(valores[i][2]);     
    var dif = Math.round((vence-inicio)/86400000) ; 
     switch (dif){
      case 0:{enviaCorreo(valores[i][0],valores[i][1],valores[i][3],dif);break};
      case 7:{enviaCorreo(valores[i][0],valores[i][1],valores[i][3],dif);break};
      case 15:{enviaCorreo(valores[i][0],valores[i][1],valores[i][3],dif);break};
      case 45:{enviaCorreo(valores[i][0],valores[i][1],valores[i][3],dif);break};
    }
  }
}

function enviaCorreo(empresa,cert,banco,dias){
  var array = ["mail@gmail.com", "mail@gmail.com"];
  if(dias == 0){
    var str = ("El día de hoy se vencio el certificado nro: "+cert+" del banco "+banco);
    Mail(array,str);
  }else{
  var str = ("Restan "+ dias+" para que se venza el certificado nro: "+cert+ " del banco "+banco);
    Mail(array,str);}
}

function Mail(destinatarios,mensaje){
  var recipient = destinatarios;
  var enviar = mensaje;
  GmailApp.sendEmail(destinatarios, 'Alerta Certificado bancario', enviar); 
}
...