Automatizador de Correos de Seguimiento

/**

  • RECURSO APPS SCRIPT: Notificador Automático de Clientes
  • Descripción: Recorre la hoja de cálculo, busca filas marcadas como "Pendiente",
  • envía un correo personalizado al cliente y cambia el estado a "Enviado". */

function enviarNotificacionesAutomaticas() { // 1. Obtener la hoja activa y los datos const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const datos = hoja.getDataRange().getValues();

// 2. Mapeo de columnas (0 = Columna A, 1 = Columna B, etc.) const COL_NOMBRE = 0; // Columna A const COL_EMAIL = 1; // Columna B const COL_DETALLE = 2; // Columna C const COL_ESTADO = 3; // Columna D

// 3. Recorrer los datos desde la fila 2 (índice 1) para ignorar los encabezados for (let i = 1; i < datos.length; i++) { const fila = datos[i]; const nombre = fila[COL_NOMBRE]; const email = fila[COL_EMAIL]; const detalle = fila[COL_DETALLE]; const estado = fila[COL_ESTADO];

// Verificar si la fila está lista para envío y tiene un correo válido
if (estado.toString().trim().toLowerCase() === 'pendiente' && email) {
  
  const asunto = `Recordatorio: ${detalle}`;
  const mensaje = `Hola ${nombre},\n\n` +
    `Esperamos que te encuentres muy bien.\n\n` +
    `Te escribimos para hacer un seguimiento sobre: "${detalle}".\n` +
    `Si ya realizaste esta gestión, puedes ignorar este mensaje.\n\n` +
    `Quedamos atentos a cualquier duda.\n\n` +
    `Saludos,\n` +
    `El equipo de atención`;

  try {
    // Envía el correo utilizando el servicio nativo de Gmail
    MailApp.sendEmail(email, asunto, mensaje);
    
    // Actualiza el estado en la celda correspondiente a "Enviado"
    // (i + 1 compensa el índice base cero de JavaScript)
    hoja.getRange(i + 1, COL_ESTADO + 1).setValue('Enviado');
    
    Logger.log(`Correo enviado con éxito a: ${email}`);
  } catch (error) {
    Logger.log(`Error al enviar a ${email}: ${error.toString()}`);
  }
}

} }