我环顾四周,虽然零零碎碎,却无法解决难题。
我需要在同一列单元格列表中包含的日期前90天发送电子邮件。
例如,脚本应在01/08/19发送一封电子邮件,其中包含以下文本:
提醒生日的乔恩·多伊(Jon Doe)2019年11月11日
答案 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)
我正在使用此脚本来提醒银行证书到期,您可以轻松适应您的问题,对不起,但是我没有时间翻译。
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);
}