En este tutorial vamos a aprender cómo ejecutar un script de Google Apps Script automáticamente cuando se inserta una nueva fila en una hoja de cálculo de Google Sheets, ya sea desde una integración con Zapier, AppSheet, Google Forms u otro servicio externo. Esto es súper útil para automatizar procesos como enviar correos, copiar datos a otra hoja o activar otras funciones sin tener que intervenir manualmente.
Si prefieres ver el tutorial en video, te lo dejo a continuación para que sigas paso a paso:
Para seguir este tutorial necesitas tener una hoja de cálculo de Google Sheets y acceso al editor de Apps Script. Además, debes tener configurada tu integración con Zapier, AppSheet o cualquier otra herramienta que inserte filas automáticamente en tu hoja.
¿Por qué onEdit() no funciona para detectar filas insertadas automáticamente?
Muchos intentan usar la función onEdit() para ejecutar código cuando llega una nueva fila, pero esta función solo se activa cuando un usuario edita manualmente una celda en la hoja. Si la fila es insertada por una integración externa, como Zapier o AppSheet, onEdit no se dispara. Esto se debe a que onEdit() está diseñado para detectar ediciones directas y no cambios estructurales o automáticos.
La solución: usar activadores instalables con onChange()
La forma correcta de detectar cuando se inserta una nueva fila es usando un activador instalable que se ejecute «al producirse un cambio» (onChange()). Este activador detecta cambios estructurales como la inserción de filas, la creación o eliminación de hojas, o columnas, entre otros. Así puedes ejecutar tu función automáticamente cuando llegue nueva información.
Paso 1: Crear la función básica en Apps Script
Abre tu hoja de cálculo y ve a Extensiones > Apps Script. Crea una función sencilla para probar que el activador funcione:
function hacerAlgoCuandoLlegaInfo() {
Logger.log("Activado correctamente al detectar cambio");
}
Este código solo registra un mensaje en los registros para confirmar que el activador se ejecuta. Más adelante lo vamos a ampliar para que haga algo útil con los datos.
Paso 2: Crear el activador instalable onChange()
En el editor de Apps Script, haz clic en el ícono de reloj ⏰ (activadores) en la barra lateral izquierda. Luego sigue estos pasos:
- Haz clic en + Añadir activador.
- Selecciona la función
hacerAlgoCuandoLlegaInfo. - En «Evento de activación», elige Al producirse un cambio.
- Guarda el activador.
Con esto, cada vez que se inserte una fila (por ejemplo, desde AppSheet o Zapier), tu función se ejecutará automáticamente.
Paso 3: Verificar que el activador funciona
Desde tu integración, crea un nuevo registro que agregue una fila en tu hoja. Luego, en el editor de Apps Script, ve a Ver > Registros para confirmar que el mensaje Logger.log("Activado correctamente al detectar cambio") aparece. Si lo ves, ¡felicitaciones! El activador está funcionando.
Cómo obtener los datos de la nueva fila insertada
Ahora que el activador funciona, el siguiente paso es capturar la información de la fila que se acaba de insertar para usarla en tu script. Aquí te muestro cómo hacerlo con un ejemplo práctico.
function hacerAlgoCuandoLlegaInfo(e) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const hoja = ss.getSheetByName("Datos");
const ultimaFila = hoja.getLastRow();
const ultimaColumna = hoja.getLastColumn();
// Obtener los valores de la última fila
const valores = hoja.getRange(ultimaFila; 1; 1; ultimaColumna).getValues()[0];
// Asumiendo que la columna A es Nombre y la B es Email
const nombre = valores[0];
const email = valores[1];
const fecha = new Date();
// Copiar datos a otra hoja llamada "Copia"
const hojaDestino = ss.getSheetByName("Copia");
hojaDestino.appendRow([email; nombre; fecha]);
}
Este código hace lo siguiente:
- Obtiene la última fila insertada en la hoja llamada «Datos».
- Extrae los valores de esa fila, asumiendo que el nombre está en la columna A y el email en la columna B.
- Agrega una nueva fila en otra hoja llamada «Copia» con el email, nombre y la fecha actual.
Ejemplo de estructura de la hoja «Datos»
| Columna A | Columna B |
|---|---|
| Nombre | |
| Malena | malena@email.com |
| Karen | karen@email.com |
Este es el formato esperado en la hoja «Datos». Cada vez que se inserta una nueva fila, el script copiará esos datos a la hoja «Copia» junto con la fecha actual.
¿Qué más puedes hacer con este activador?
Una vez que tienes este sistema funcionando, las posibilidades son enormes. Aquí algunos ejemplos de lo que puedes automatizar:
- Enviar correos automáticos usando
MailApp.sendEmail()para notificaciones o confirmaciones. - Crear eventos en Google Calendar automáticamente.
- Actualizar otras hojas o incluso archivos separados de Google Sheets para reportes o backups.
- Aplicar condiciones para ejecutar diferentes acciones según el contenido de la fila (por ejemplo, enviar un correo solo si cierto campo tiene un valor específico).
Además, puedes combinar este método con otras funciones de Google Apps Script para crear flujos de trabajo mucho más complejos y personalizados.
Consejos y buenas prácticas
Al trabajar con activadores instalables y Apps Script, ten en cuenta lo siguiente para evitar problemas:
- Evita operaciones pesadas dentro del activador para no superar los límites de ejecución de Apps Script.
- Usa registros (
Logger.log()) para depurar y entender el flujo de tu script. - Si tu integración inserta muchas filas al mismo tiempo, considera implementar control de duplicados o procesamiento por lotes.
- Recuerda que los activadores instalables requieren permisos, así que asegúrate de autorizarlos correctamente.
Conclusión
En este tutorial aprendiste a crear un activador instalable que se ejecuta cuando se inserta una nueva fila en Google Sheets desde integraciones como AppSheet o Zapier. Vimos por qué onEdit() no funciona en estos casos y cómo usar onChange() para detectar estos cambios estructurales. Además, aprendiste a obtener los datos de la fila insertada y a usarlos para automatizar tareas como copiar información o enviar correos.
Este método es muy poderoso y te permite automatizar tareas avanzadas sin intervención manual. Puedes adaptarlo a tus necesidades y combinarlo con otras funciones de Google Apps Script para crear flujos de trabajo automatizados que te ahorren tiempo y errores.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.