Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

473
Vistas
Notificación de Google Apps Script a través de alertas por correo electrónico basadas en la comparación de fechas de hojas en un ciclo iterativo: es la primera vez que usa este idioma

Nunca antes había escrito en JavaScript, y estoy seguro de que se nota. Es probable que esto haga que algunos de ustedes se estremezcan, pero es la mejor manera que conozco de analizar y verificar los datos de la hoja de cálculo. Necesito que se envíe una alerta por correo electrónico cuando la fecha de calibración sea anterior a una fecha límite especificada. Probé algunas configuraciones, algunas envían correos electrónicos para cada elemento independientemente de la comparación de fechas y otras no envían nada, como el siguiente script. ¡Por favor, ayúdame a hacer que esto funcione! Estoy seguro de que es principalmente sintaxis o falta de especificación para ciertas estructuras de datos.

 ''' function checkCal(){ // Fetch the equipment name, calibration date, and today's date var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1xKzfW5vX3-eDWKuKmc3R_xin4FMFKhDHaDAd7vdoaLE/edit#gid=0'); SpreadsheetApp.setActiveSpreadsheet(ss); var calibrationDateRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("H2:H12").getValues(); var vendList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("C2:C12").getValues(); var modelList = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("D2:D12").getValues(); var cutoffDate = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails").getRange("D1").getValue(); var shipped = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("I2:I12").getValues(); var notes = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("J2:J12").getValues(); var sn = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("E2:E12").getValues(); var loc = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Equipment").getRange("A2:A12").getValues(); // Check date for (var i = 0; i < calibrationDateRange.length; i++){ var calDate = Date(calibrationDateRange[i].getValue()); //console.log('comparing' + calDate + ' to ' + cutoffDate); if (calDate.getTime() <= cutoffDate.getTime() + shipped[i] == false){ // Fetch the email address var emailRange = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails").getRange("B2"); var emailAddress = emailRange.getValue(); // Send Alert Email. var message = 'Calibration due date is approaching for ' + vendList[i] + ' ' + modelList[i] + ' S/N: ' + sn[i] + ', located at ' + loc[i] + ', on ' + calDate[i] + '. Please reference the equipment spreadsheet to verify this date and the serial number of the referenced equipment. Note: ' + notes[i]; // body of email using associated variables var subject = 'Equipment Calibration Alert'; MailApp.sendEmail(emailAddress, subject, message); } } } '''
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Pruébalo de esta manera:

 function checkCal() { var ss = SpreadsheetApp.openByUrl('https://docs.google.com/spreadsheets/d/1xKzfW5vX3-eDWKuKmc3R_xin4FMFKhDHaDAd7vdoaLE/edit#gid=0'); const msh = ss.getSheetByName("Emails"); const esh = ss.getSheetByName("Equipment"); const evs = esh.getRange(2, 1, esh.getLastRow() - 1, esh.getLastColumn()).getValues(); const codt = new Date(msh.getRange("D1").getValue()); const emailAddress = msh.getRange(msh.getRange("B2").getValue()).getValue(); evs.forEach((r, i) => { let calDate = new Date(r[7]); if (calDate.valueOf() <= codt.valueOf() && !r[8]) { let message = 'Calibration due date is approaching for ' + r[2] + ' ' + modelList[i] + ' S/N: ' + r[4] + ', located at ' + r[0] + ', on ' + calDate + '. Please reference the equipment spreadsheet to verify this date and the serial number of the referenced equipment. Note: ' + r[9]; var subject = 'Equipment Calibration Alert'; MailApp.sendEmail(emailAddress, subject, message); } }); }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda