Ejecutar Funciones en Varias Hojas con Google Apps Script

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:

  1. 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.

  1. Ve a Extensiones > Apps Script.
  2. 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:

  1. Crea una hoja llamada “Config” y agrega una tabla con las hojas y columnas:
HojaColumna
Hoja13
Hoja24
  1. 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:

  1. Ve a Editores de script.
  2. Selecciona Editores de script > Activadores > Añadir activador.
  3. Elige la función onEdit.
  4. 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!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Pin It on Pinterest

Share This