Crear un Desplegable con Opciones Múltiples en Google Sheets

Hoy vamos a aprender cómo crear un desplegable con opciones múltiples que se actualiza automáticamente. Vamos a ver cómo podemos seleccionar múltiples opciones para un solo libro y cómo el script manejará esas selecciones sin duplicados.

Video

Paso 1: Configurar Google Sheets

Crear la Hoja de Opciones

  1. Abre un nuevo archivo de Google Sheets (sheets.new).
  2. Renombra la primera hoja a “opciones”.
  3. Ingresa tus categorías (en nuestro caso, géneros literarios) en la columna A, comenzando desde la celda A2.
Género
Novela
Poesía
Cuento
Realismo Mágico
Fantasía
Ciencia Ficción

Crear la Hoja de Datos

  1. Crea una nueva hoja y renómbrala a “datos”.
  2. En la columna A, ingresa el encabezado “Libro”.
  3. En la columna B, ingresa el encabezado “Género”.

Vamos a suponer que quieres ingresar el libro “Cien Años de Soledad”.

LibroGénero
Cien Años de Soledad

Crear el Desplegable

  1. Selecciona la celda B2 y ve a Datos > Validación de datos.
  2. En “Criterios”, selecciona “Lista a partir de un rango”.
  3. Selecciona el rango de géneros de la hoja “opciones” (por ejemplo, opciones!A2:A).
  4. Aplica la validación de datos para todas las celdas en la columna B (desde B2 hasta B).

Paso 2: Configurar el Script

Abrir el Editor de Scripts

  1. Ve a Extensiones > Apps Script.
  2. Crea un nuevo proyecto y añade el siguiente código:
function onEdit(e) {
  const hoja = e.source.getActiveSheet();
  const nombreHoja = hoja.getName();
  const rango = e.range;
  const columna = rango.getColumn();
  const fila = rango.getRow();
  const valorNuevo = e.value;
  const valorAntiguo = e.oldValue;

  // Configuración
  const nombreHojaDesplegable = 'datos';
  const columnaDesplegable = 2;
  const filaInicio = 2;

  if (nombreHoja === nombreHojaDesplegable && columna === columnaDesplegable && fila >= filaInicio) {
    if (!valorAntiguo) {
      // Si no hay valor antiguo, no hacer nada
      return;
    }

    if (!valorNuevo) {
      // Si el valor nuevo es nulo, borrar el contenido
      rango.clearContent();
      return;
    }

    const valoresExistentes = valorAntiguo.split(', ');
    if (valoresExistentes.indexOf(valorNuevo) === -1) {
      // Si el valor nuevo no está en los valores existentes, agregarlo
      rango.setValue(valorAntiguo + ', ' + valorNuevo);
    } else {
      // Si el valor nuevo ya está en los valores existentes, mantener los valores antiguos
      rango.setValue(valorAntiguo);
    }
  }
}

Explicación del Código

  • onEdit(e): Esta función se ejecuta cada vez que se edita una celda.
  • Se verifica que la edición se realice en la hoja “datos”, en la columna de géneros (columna B) y a partir de la fila 2.
  • Si la celda editada no tenía un valor anterior (!valorAntiguo), no se hace nada.
  • Si el nuevo valor es nulo (!valorNuevo), se borra el contenido de la celda.
  • Si el valor nuevo no está en la lista de valores existentes (valoresExistentes.indexOf(valorNuevo) === -1), se añade el nuevo valor.
  • Si el valor nuevo ya está en la lista, se mantiene el valor anterior.

Guardar y Probar el Script

  1. Guarda el script y regresa a tu hoja de cálculo.
  2. Prueba seleccionando diferentes géneros para ver cómo se actualizan las opciones múltiples en la celda de género.

Paso 3: Añadir un Menú Personalizado (Opcional)

Crear el Menú

Para hacer el uso del script más amigable, puedes añadir un menú personalizado:

  1. Añade el siguiente código al proyecto de Apps Script:
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Opciones Múltiples')
    .addItem('Configurar Desplegable', 'configurarDesplegable')
    .addToUi();
}

function configurarDesplegable() {
  SpreadsheetApp.getUi().alert('El desplegable está configurado.');
}
  1. Guarda el script y recarga la hoja de cálculo para ver el nuevo menú.

Este menú no añade funcionalidad adicional, pero puede ser modificado para incluir configuraciones o acciones adicionales según tus necesidades.

Conclusión

Con este script, puedes crear desplegables con opciones múltiples en Google Sheets de manera eficiente. Este método es útil para categorías que pueden tener múltiples etiquetas y te permite mantener los datos organizados sin duplicados.

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