En este tutorial vamos a aprender cómo usar el disparador onEdit en Google Apps Script para ejecutar código automáticamente cada vez que editamos una celda en Google Sheets. Esta función es súper útil para automatizar tareas, validar datos o hacer acciones específicas según la celda que se modifique. Te explicaré paso a paso cómo funciona onEdit, qué tipo de ediciones detecta y cómo podemos controlar en qué hojas, filas o columnas queremos que se active el código. Así podrás aprovechar al máximo esta funcionalidad para tus proyectos o tu negocio.
El disparador onEdit es una función especial que se ejecuta automáticamente cuando editamos una celda en una hoja de cálculo. Si ya has trabajado con macros o Google Apps Script, seguramente te suena. Lo que hace es detectar cambios como escribir un valor, borrar o modificar una celda, y permite ejecutar código justo en ese momento. Esto es muy diferente a una función normal que solo se ejecuta cuando la activas manualmente.
Cómo crear tu primer script con onEdit
Para empezar, abres el Editor de secuencias de comandos desde tu hoja de Google Sheets (Extensiones > Apps Script). Por defecto, te aparece la función myFunction(), que puedes borrar o modificar. Lo que debes hacer es crear la función onEdit(e), que es la que se ejecutará cada vez que haya un cambio en la hoja.
function onEdit(e) {
SpreadsheetApp.getUi().alert('Has editado algo');
}
Este código simple muestra una alerta cada vez que editas cualquier celda. Para probarlo, guarda el script y regresa a la hoja. Si escribes o cambias el contenido de una celda, verás la alerta. Sin embargo, no se activará si solo cambias formato como color de fondo o bordes, ya que onEdit solo detecta cambios en el contenido (texto, números, fórmulas).
Obteniendo información de la celda editada
Para hacer algo más útil, podemos saber exactamente qué celda fue modificada: su fila, columna y valor. Esto se logra con el objeto e que recibe la función onEdit. Aquí te muestro cómo hacerlo:
function onEdit(e) {
var hoja = e.source.getActiveSheet();
var celda = e.range;
var fila = celda.getRow();
var columna = celda.getColumn();
var valor = celda.getValue();
SpreadsheetApp.getUi().alert('Editado: fila ' + fila + ', columna ' + columna + ', valor: ' + valor);
}
Con este código, cada vez que edites una celda, te mostrará una alerta con la posición y el contenido. Esto es clave para luego agregar condicionales y que el script solo actúe en ciertas filas, columnas o valores.
Controlando dónde se ejecuta onEdit
Muchas veces no queremos que el script se ejecute en toda la hoja, sino solo en un rango específico o en ciertas hojas. Para eso, usamos condicionales que verifiquen la hoja, fila o columna antes de ejecutar el código. Por ejemplo:
function onEdit(e) {
var hoja = e.source.getActiveSheet();
var nombreHoja = hoja.getName();
var celda = e.range;
var fila = celda.getRow();
var columna = celda.getColumn();
var valor = celda.getValue();
// Ejecutar solo si estamos en la hoja "Hoja3" y columna 1, fila mayor a 1
if ((nombreHoja === 'Hoja3' || nombreHoja === 'Hoja2') && columna === 1 && fila > 1) {
SpreadsheetApp.getUi().alert('Editado en ' + nombreHoja + ': fila ' + fila + ', columna ' + columna + ', valor: ' + valor);
}
}
Este ejemplo limita la ejecución solo a las hojas «Hoja3» o «Hoja2», y solo si editamos en la columna 1 y filas mayores a 1 (para evitar encabezados). Así tienes un control muy fino de cuándo se dispara el código.
Disparar acciones según el valor de la celda
También puedes hacer que el script se active solo cuando la celda tenga un valor específico. Por ejemplo, si quieres que solo se ejecute cuando escribas «OK» o cuando la celda esté vacía. Esto es muy útil para validar datos o activar procesos con checkboxes. Aquí un ejemplo:
function onEdit(e) {
var hoja = e.source.getActiveSheet();
var nombreHoja = hoja.getName();
var celda = e.range;
var fila = celda.getRow();
var columna = celda.getColumn();
var valor = celda.getValue();
if ((nombreHoja === 'Hoja3' || nombreHoja === 'Hoja2') && columna === 1 && fila > 1) {
if (valor === 'OK') {
SpreadsheetApp.getUi().alert('¡Valor OK detectado en fila ' + fila + '!');
// Aquí puedes poner más código para ejecutar cuando se cumple la condición
}
}
}
Además, puedes combinar varias condiciones para que el disparador solo funcione cuando se cumplan todas. Por ejemplo, que ciertas celdas estén vacías, o que el valor sea distinto de «OK». La clave está en usar condicionales anidados y operadores lógicos para afinar el comportamiento.
Resumen y próximos pasos
En este tutorial vimos cómo usar la función onEdit de Google Apps Script para detectar cambios en una hoja de Google Sheets y ejecutar código automáticamente. Aprendimos a:
- Crear la función onEdit y entender cuándo se ejecuta.
- Obtener fila, columna y valor de la celda editada para usar en el código.
- Controlar en qué hojas, filas y columnas queremos que el script se active.
- Disparar acciones solo cuando la celda tenga un valor específico o esté vacía.
Con estas bases puedes empezar a automatizar tareas específicas, validar datos o crear flujos de trabajo personalizados en tus hojas de cálculo. Esto es solo el inicio, hay muchas posibilidades y combinaciones para explorar. En futuros tutoriales podré mostrarte más ejemplos prácticos y casos de uso avanzados.
Si quieres aprender a usar Google Forms y Google Sheets desde cero, te invito a tomar un curso gratis de 2 horas.