根据单元格值(日期)发送电子邮件

时间:2019-07-09 14:05:34

标签: date email google-apps-script

我环顾四周,虽然零零碎碎,却无法解决难题。

我需要在同一列单元格列表中包含的日期前90天发送电子邮件。

这是我的数据:
enter image description here

例如,脚本应在01/08/19发送一封电子邮件,其中包含以下文本:

  

提醒生日的乔恩·多伊(Jon Doe)2019年11月11日

2 个答案:

答案 0 :(得分:1)

尝试一下:

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;
}

Here是我发现如何计算时差的地方。我的代码是构建的,假设您具有从A6开始的列表。

答案 1 :(得分:0)

我正在使用此脚本来提醒银行证书到期,您可以轻松适应您的问题,对不起,但是我没有时间翻译。

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); 
}