En este tutorial te voy a mostrar cómo automatizar el envío de correos electrónicos en Google Sheets usando Google Apps Script. La idea es crear un sistema que envíe automáticamente un correo cuando el estado de una factura cambie a «Vencido», sin que tengas que intervenir manualmente. Esto te ayudará a ahorrar tiempo y evitar olvidos en el seguimiento de tus clientes.
Si prefieres ver el tutorial en video, te los dejo a continuación para que sigas paso a paso.
Requisitos para empezar
- Cuenta de Google con acceso a Google Sheets y Gmail.
- Conocimientos básicos de Google Sheets y Google Apps Script.
- Una hoja de cálculo con datos estructurados para controlar facturas y sus estados.
1. Configura tu hoja de cálculo en Google Sheets
Primero, vamos a preparar la hoja para que el script pueda trabajar con ella. Imagina que tienes una tabla con esta estructura:
| Columna | Descripción |
|---|---|
| A | Cliente – Nombre del cliente |
| B | Email – Dirección del cliente |
| C | Fecha de Vencimiento – Fecha límite para pago |
| D | Estado – Indica si la factura está «Vencido» o «Ok» |
| E | Estado del Correo – Indica si el correo ya fue «Enviado» o está vacío |
En la columna Estado vamos a poner una fórmula que compare la fecha de vencimiento con la fecha actual para saber si la factura está vencida o no.
=SI(C2<=HOY(); "Vencido"; "Ok")
Esta fórmula la copias hacia abajo para todas las filas que tengas. Así, cada vez que abras la hoja, el estado se actualizará automáticamente según la fecha actual.
2. Crea el script para enviar correos automáticos
Ahora vamos a crear el script que revisará cada fila y enviará un correo si la factura está vencida y no se ha enviado el aviso.
- En Google Sheets, ve a
Extensiones>Apps Scriptpara abrir el editor. - Crea un nuevo proyecto y copia el siguiente código en el archivo
Code.gs:
function enviarCorreosAutomatizados() {
var hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var ultimaFila = hoja.getLastRow();
for (var fila = 2; fila <= ultimaFila; fila++) {
var estado = hoja.getRange(fila; 4).getValue(); // Columna D: Estado
var estadoCorreo = hoja.getRange(fila; 5).getValue(); // Columna E: Estado del Correo
Logger.log("Fila " + fila + ": Estado=" + estado + ", EstadoCorreo=" + estadoCorreo); // Para depurar
if (estado === "Vencido" && estadoCorreo !== "Enviado") {
var email = hoja.getRange(fila; 2).getValue(); // Columna B: Email
var cliente = hoja.getRange(fila; 1).getValue(); // Columna A: Cliente
var asunto = "Aviso de Crédito Vencido";
var mensaje = "Hola " + cliente + ",nnTu factura está vencida. Por favor, ponte en contacto para regularizar la situación.nnGracias.";
try {
MailApp.sendEmail(email; asunto; mensaje);
hoja.getRange(fila; 5).setValue("Enviado"); // Marca como enviado
Logger.log("Correo enviado a " + email);
} catch (e) {
Logger.log("Error enviando correo a " + email + ": " + e.message);
}
}
}
}
Este script recorre todas las filas desde la 2 hasta la última con datos y verifica si el estado es «Vencido» y si el correo no ha sido enviado aún. Si se cumplen ambas condiciones, envía el correo y actualiza la columna Estado del Correo a «Enviado».
Importante: Si al ejecutar el script no ves que se envían correos ni aparece ninguna ventana, revisa los registros de ejecución en el editor de Apps Script. Ahí podrás ver los mensajes de Logger.log() que te ayudarán a entender qué está pasando y si el script está entrando en los condicionales.
3. Ejecuta y prueba el script
Guarda el script con un nombre que te ayude a identificarlo, por ejemplo «Enviar Correos Automáticos». Luego, en el editor, selecciona la función enviarCorreosAutomatizados y haz clic en el botón de ejecutar. La primera vez te pedirá permisos para enviar correos y acceder a la hoja.
Si todo está bien configurado, deberías ver que los correos se envían y la columna Estado del Correo cambia a «Enviado». Si no sucede, revisa los registros para depurar posibles errores o problemas con las direcciones de correo.
4. Automatiza la ejecución diaria del script
Para que este proceso sea completamente automático, configuraremos un activador que ejecute el script todos los días a una hora que elijas.
- En el editor de Apps Script, haz clic en el ícono del reloj (Activadores) en la barra lateral izquierda.
- Haz clic en + Añadir activador.
- En la ventana que aparece, selecciona la función
enviarCorreosAutomatizados, elige Temporizador basado en tiempo, y luego configura para que se ejecute Diariamente a la hora que prefieras (por ejemplo, 6:00 AM). - Guarda el activador y cierra la ventana.
Con esto, el script correrá solo cada día y enviará los correos automáticamente a los clientes con facturas vencidas que aún no hayan recibido el aviso.
Conclusión
Con este sistema puedes automatizar el envío de correos de cobro y evitar olvidos o procesos manuales tediosos. Solo configuras tu hoja con la fórmula para el estado, creas el script que envía los correos y lo programas para que corra automáticamente cada día. Además, con los registros de ejecución y Logger.log() puedes depurar y asegurarte de que todo funcione correctamente.
Si quieres profundizar más en Google Apps Script y aprender a crear automatizaciones avanzadas en Google Sheets, te invito a inscribirte en mi academia JuanSGuzman, donde tienes cursos, sesiones en vivo y soporte personalizado.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.
Una vez ejecuto, no me sale ninguna pestaña, ni envia ni nada
te toca ver los registros a ver si no esta entrando a los condicionales
Usa Logger.log({variable}) para ver donde está el error
Saludos!