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
- Corregir Desplegables: Ajustar los desplegables para que, después de trabajar mucho con ellos y copiar y pegar datos, podamos corregir errores automáticamente.
- 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
- Seleccionamos un rango de celdas que contiene los continentes.
- Vamos al menú
Personalizadasy seleccionamosActualizar Desplegables. - 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.