He buscado por todas partes, pero parece que no puedo reconstruir el código de todas las diferentes respuestas que existen.
Tengo 4 columnas que se completan con lo siguiente: fecha de procesamiento, correo electrónico, nombre, fecha de eliminación
Lo que me gustaría hacer es enviar un correo electrónico a una dirección de correo electrónico estática, incluida la dirección de correo electrónico que debe eliminarse cuando las celdas de la columna "Fecha de eliminación" coincidan con la fecha de hoy. También necesito que esto se ejecute una vez al día.
He descubierto el funcionamiento diario con los disparadores. He pegado el código a continuación que estoy tratando de ejecutar. Mi idea fue poner los datos en una matriz, evaluar la cuarta columna para las fechas. Luego, cuando la fecha es hoy, devuelve la fila completa para que pueda usar el correo electrónico que aparece en la segunda columna.
function SendEmail() { var presentDay = new Date(); var rows = SpreadsheetApp.getActiveSheet().getDataRange().getValues(); var filteredEmails = rows.filter(function(row) { var removalDate = row[4]; if (removalDate === Date) { return row } }) Logger.log(filteredEmails); var emailAddress = "staticEmail@gmail.com"; var message = ' needs to be removed'; var subject = 'Member needs to be removed'; //MailApp.sendEmail(emailAddress, subject, row[2] + message); }Prueba algo como esto:
function sendEmails() { const ss = SpreadsheetApp.getActive(); const sh = ss.getSheetByName('Emails'; const sr = 2; //data start row const dt = new Date(); const tdv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf(); const vs = sh.getRange(sr, 1, sh.getLastRow() - sr + 1, sh.getLastColumn()).getValues(); const fvs = vs.filter(r => { let d = new Date(r[4]); let dv = new Date(d.getFullYear(),d.getMonth(),d.getDate()).valueOf() return dv == tdv; }); fvs.forEach(r => {});//send emails with this loop }Si desea comparar fechas numéricamente, debe usar valueOf() o getTime();