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.

JuanSGuzman
Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.