Hoy vamos a aprender cómo ejecutar un código en varias hojas de tu libro de Google Sheets. Esto puede ser útil para ejecutar timestamps, enviar correos, manejar desplegables, y más. Veremos cómo hacerlo funcionar en todas las hojas, en ciertas hojas, en todas menos algunas, y en hojas y columnas específicas.
Paso 1: Configurar la Hoja
Para empezar, crea una nueva hoja en Google Sheets:
- Abre un nuevo Google Sheets con
sheets.new.
Paso 2: Crear un Script Básico
Vamos a crear un script básico que ejecute una acción en todas las hojas.
- Ve a
Extensiones > Apps Script. - Elimina cualquier código que ya esté ahí y reemplázalo con lo siguiente:
function onEdit(e) {
let range = e.range;
let sheet = range.getSheet();
let row = range.getRow();
let column = range.getColumn();
// Acción básica: Timestamp en la celda a la derecha
if (column == 3) { // Columna 3 es la columna "C"
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
}
Este código agrega un timestamp en la celda a la derecha cada vez que editas algo en la columna 3.
Paso 3: Condicionales Básicos
Timestamp en una Columna Específica
Para limitar la acción a una sola columna, por ejemplo, la columna 3:
if (column == 3) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
Timestamp en una Fila y Columna Específicas
Para ejecutar el código solo en una celda específica, por ejemplo, la celda C3:
if (column == 3 && row == 3) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
Paso 4: Ejecutar en Hojas Específicas
En una Hoja Específica
Para ejecutar el código solo en una hoja específica, por ejemplo, «Hoja1»:
if (sheet.getName() == "Hoja1") {
if (column == 3) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
}
En Varias Hojas Específicas
Para ejecutar el código en varias hojas, por ejemplo, «Hoja1» y «Hoja2»:
if (sheet.getName() == "Hoja1" || sheet.getName() == "Hoja2") {
if (column == 3) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
}
En Todas las Hojas Menos Algunas
Para ejecutar el código en todas las hojas menos en «Hoja1» y «Hoja2»:
if (sheet.getName() != "Hoja1" && sheet.getName() != "Hoja2") {
if (column == 3) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
}
Paso 5: Ejecutar en Hojas y Columnas Específicas
Para ejecutar el código en diferentes columnas de diferentes hojas, crea una lista de hojas y columnas:
- Crea una hoja llamada «Config» y agrega una tabla con las hojas y columnas:
| Hoja | Columna |
|---|---|
| Hoja1 | 3 |
| Hoja2 | 4 |
- Modifica el script para leer esta configuración:
function onEdit(e) {
let range = e.range;
let sheet = range.getSheet();
let row = range.getRow();
let column = range.getColumn();
// Obtener configuración de la hoja "Config"
let configSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Config");
let configData = configSheet.getDataRange().getValues();
// Verificar si la hoja y la columna están en la configuración
for (let i = 1; i < configData.length; i++) {
let sheetName = configData[i][0];
let colNumber = configData[i][1];
if (sheet.getName() == sheetName && column == colNumber) {
let timestampCell = range.offset(0, 1);
timestampCell.setValue(new Date());
}
}
}
Este script lee la configuración de la hoja «Config» y aplica la acción solo si la hoja y la columna coinciden con las especificaciones.
Paso 6: Activadores Externos
Si el onEdit no funciona con servicios externos como enviar correos o trabajar con Google Forms, usa un activador instalable:
- Ve a
Editores de script. - Selecciona
Editores de script > Activadores > Añadir activador. - Elige la función
onEdit. - Selecciona el evento «Al editar».
Conclusión
Este tutorial te ha mostrado cómo ejecutar funciones en Google Sheets en varias hojas y condiciones usando Google Apps Script. Puedes adaptar este enfoque para manejar múltiples condiciones y acciones personalizadas según tus necesidades. ¡Espero que te haya sido útil!