Desplegables Condicionales para un Rango en Sheets

Hola, bienvenidos a un nuevo tutorial de Google Sheets en Juanes Guzmán. En este tutorial, actualizaremos las listas condicionales para todo un rango

Objetivos del Tutorial

  1. Corregir Desplegables: Ajustar los desplegables para que, después de trabajar mucho con ellos y copiar y pegar datos, podamos corregir errores automáticamente.
  2. Actualizar en Masa: Implementar una funcionalidad que nos permita seleccionar un rango y actualizar todos los desplegables de ese rango de manera masiva.

Resumen del Código Actual

Hasta ahora, hemos desarrollado un código que:

  • Se activa cada vez que se edita una celda específica.
  • Genera desplegables condicionales basados en la selección de otra celda.
  • Utiliza funciones de Google Apps Script para crear y actualizar estos desplegables.

Mejoras y Nuevas Funcionalidades

Función para Actualizar Desplegables en Masa

Vamos a crear una nueva función que nos permitirá seleccionar un rango de celdas y actualizar todos los desplegables de ese rango. Esta función recorrerá cada celda del rango y aplicará la lógica del desplegable condicional.

Paso 1: Crear la Función desplegablesMasivos

Empezamos copiando la función desplegables y la modificamos para que pueda trabajar con un rango de celdas en lugar de una sola celda.

function desplegablesMasivos() {
    const rangoActivo = SpreadsheetApp.getActiveSpreadsheet().getActiveRange();
    const primeraFila = rangoActivo.getRow();
    const primeraColumna = rangoActivo.getColumn();
    const filas = rangoActivo.getNumRows();
    const columnas = rangoActivo.getNumColumns();
    const valoresActivos = rangoActivo.getValues();

    if (nombreHoja === 'Hoja1' && (primeraColumna === 1 || primeraColumna === 2) && columnas === 1) {
        // Ciclo para recorrer cada fila del rango seleccionado
        for (let i = 0; i < filas; i++) {
            const filaActual = primeraFila + i;
            const valorActivo = valoresActivos[i][0];

            if (valorActivo === "") {
                SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(filaActual, primeraColumna + 1).clearContent().clearDataValidations();
                SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().getRange(filaActual, primeraColumna + 2).clearContent().clearDataValidations();
            } else {
                crearDesplegable(nombreHoja, filaActual, primeraColumna, valoresActivos[i][0]);
            }
        }
    }
}

Paso 2: Ajustar la Función crearDesplegable

Modificamos la función crearDesplegable para que funcione correctamente con los nuevos parámetros.

function crearDesplegable(nombreHoja, fila, columna, valor) {
    // Código existente para crear el desplegable...
}

Paso 3: Añadir la Función al Menú

Añadimos un nuevo menú en Google Sheets para que los usuarios puedan ejecutar la función desplegablesMasivos.

function onOpen() {
    const ui = SpreadsheetApp.getUi();
    ui.createMenu('Personalizadas')
      .addItem('Actualizar Desplegables', 'desplegablesMasivos')
      .addToUi();
}

Probar y Verificar

Guardamos el script y probamos la nueva funcionalidad en Google Sheets. Seleccionamos un rango de celdas y ejecutamos la función desplegablesMasivos desde el menú personalizado.

Ejemplo de Uso

  1. Seleccionamos un rango de celdas que contiene los continentes.
  2. Vamos al menú Personalizadas y seleccionamos Actualizar Desplegables.
  3. Verificamos que todos los desplegables de las ciudades se hayan actualizado correctamente según el continente seleccionado.

Conclusión

Con estas mejoras, hemos ampliado la funcionalidad de los desplegables condicionales, permitiendo su actualización en masa. Esto facilita la corrección de errores y la gestión eficiente de los datos en Google Sheets.

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