
👌 Selección múltiple en Google Sheets: script para celdas con validación de datos
Un menú desplegable en Google Sheets es una función práctica. Configure la validación de datos y la celda solo aceptará valores de un rango. Pero hay una trampa: solo puede seleccionar un elemento. ¿Qué pasa si su tarea necesita una etiqueta «urgent, budget, design», tres valores en una celda? Con las herramientas estándar, no hay forma.
En la práctica, esta necesidad surge constantemente: categorizar gastos, etiquetar tareas, listar participantes. Abrir el editor cada vez y añadir valores separados por comas hace perder tiempo. La solución es un pequeño script de Google Apps Script que añade una barra lateral con casillas de verificación para cualquier rango de validación de datos.
A continuación, una configuración paso a paso: desde la creación del archivo de script hasta un menú «Scripts» listo para usar en su hoja de cálculo. El código ha sido probado en hojas de cálculo reales, funciona sin permisos adicionales y no requiere conocimientos de programación.
💡 Resumen rápido:
- Configure la validación de datos para una celda por rango y elija mostrar una advertencia en lugar de rechazar la entrada
- Cree dos archivos en el editor de scripts:
multi-select.gscon la lógica ydialog.htmlcon la interfaz de la barra lateral - Guarde el proyecto, actualice la hoja de cálculo y aparecerá el elemento de menú Scripts
- Seleccione una celda con validación de datos, ejecute el script y marque los valores deseados con las casillas de verificación
- Haga clic en Seleccionar y la celda se llenará con los elementos seleccionados separados por comas
Paso 1: Preparar la hoja de cálculo y la validación de datos
Abra la hoja de cálculo de Google en la que esté trabajando. Seleccione la celda objetivo (o rango) y configure la validación de datos: Datos → Validación de datos. En el campo «Criterios», seleccione «Lista de un rango» y especifique la lista de la cual se extraerán las opciones.
Punto importante: no active «Rechazar entrada», porque si lo hace, el script no podrá escribir múltiples valores separados por comas en la celda. Mostrar una advertencia es suficiente.
Si no tiene un rango listo, cree una hoja separada «Referencia» y liste todos los valores permitidos en una columna allí. Haga referencia a este rango en la validación de datos.
Paso 2: Crear el Apps Script
En el menú de la hoja de cálculo: Extensiones → Apps Script. El editor se abrirá con una pestaña limpia y un archivo vacío. Primero, crearemos la parte del lado del servidor.
Haga clic en Archivo → Nuevo → Archivo de script. Nómbrelo multi-select.gs y pegue el código:
1 function onOpen(e) { 2 SpreadsheetApp.getUi() 3 .createMenu('Scripts') 4 .addItem('Multi-select for this cell...', 'showDialog') 5 .addToUi(); 6 } 7 8 function showDialog() { 9 var html = HtmlService.createTemplateFromFile('dialog').evaluate(); 10 SpreadsheetApp.getUi() 11 .showSidebar(html); 12 } 13 14 var valid = function() { 15 try { 16 return SpreadsheetApp.getActiveRange() 17 .getDataValidation() 18 .getCriteriaValues()[0] 19 .getValues(); 20 } catch(e) { 21 return null; 22 } 23 }; 24 25 function fillCell(e) { 26 var s = []; 27 for (var i in e) { 28 if (i.substr(0, 2) == 'ch') s.push(e[i]); 29 } 30 if (s.length) SpreadsheetApp.getActiveRange().setValue(s.join(', ')); 31 }
Lo que sucede aquí: onOpen añade el elemento «Selección múltiple para esta celda…» al menú personalizado de la hoja de cálculo. showDialog abre la barra lateral con la interfaz HTML. La función valid extrae la lista de valores permitidos de la validación de datos de la celda activa. Y fillCell recoge las casillas marcadas y las escribe en la celda separadas por comas.
Nota: i.substr(0, 2) filtra solo aquellos parámetros cuyos nombres comienzan con ch, estos son identificadores de casillas de verificación del formulario HTML. Otros parámetros se ignoran.
Haga clic en Archivo → Guardar (o Ctrl+S). En el primer guardado, el script solicitará permisos, esto es normal, sin ellos no podrá leer los datos de la celda ni mostrar la barra lateral.
Paso 3: Añadir la interfaz HTML
Ahora crearemos la barra lateral en sí. En el mismo editor: Archivo → Nuevo → Archivo HTML. Nómbrelo dialog.html y pegue:
1 <div style="font-family: sans-serif;"> 2 <? var data = valid(); ?> 3 <form id="form" name="form"> 4 <? if (Object.prototype.toString.call(data) === '[object Array]') { ?> 5 <? for (var i = 0; i < data.length; i++) { ?> 6 <? for (var j = 0; j < data[i].length; j++) { ?> 7 <input type="checkbox" 8 id="ch<?= '' + i + j ?>" 9 name="ch<?= '' + i + j ?>" 10 value="<?= data[i][j] ?>"> 11 <?= data[i][j] ?><br> 12 <? } ?> 13 <? } ?> 14 <? } else { ?> 15 <p>This cell has no 16 <a href="https://support.google.com/drive/answer/139705?hl=en">Data validation</a>. 17 </p> 18 <? } ?> 19 <input type="button" value="Select" 20 onclick="google.script.run.fillCell(this.parentNode)" /> 21 <input type="button" value="Refresh validation" 22 onclick="google.script.run.showDialog()" /> 23 </form> 24 </div>
La lógica es simple: la etiqueta del lado del servidor <? var data = valid(); ?> llama a la función valid() del archivo GS y obtiene un array de valores permitidos. Si se especifica un rango, se renderizan las casillas de verificación, una por cada valor. El botón Seleccionar envía el formulario a fillCell, el botón Actualizar validación vuelve a leer la validación de datos (práctico al cambiar entre celdas).
Si la celda seleccionada no tiene validación de datos, el panel mostrará un mensaje con un enlace a la ayuda de Google.
Guarde el archivo: Archivo → Guardar. Ambos archivos (multi-select.gs y dialog.html) deben estar en el mismo proyecto.
Paso 4: Ejecutar y usar
Regrese a la hoja de cálculo y actualice la página. Después de un par de segundos, aparecerá un nuevo elemento Scripts en la barra de menú, este es el resultado de onOpen.
Ahora el flujo de trabajo:
- Seleccione cualquier celda que tenga configurada la validación de datos por rango.
- Vaya a Scripts → Selección múltiple para esta celda….
- Se abrirá una barra lateral a la derecha con una lista de casillas de verificación, todos los valores de su rango de validación.
- Marque los elementos deseados y haga clic en Seleccionar.
- La celda se llenará con los valores seleccionados separados por comas:
urgent, budget, design.
No tiene que cerrar la barra lateral. Simplemente haga clic en otra celda (también con validación de datos) y haga clic en Actualizar validación, la lista de casillas se actualizará para la nueva celda.

En la captura de pantalla, el resultado: una celda con validación de datos, una barra lateral con casillas de verificación activas y el menú Scripts en la barra de menú. Así es exactamente como se ve la solución en acción.
Paso 5: Qué se puede mejorar
El script básico resuelve la tarea «seleccionar múltiples valores de una lista desplegable», y para la mayoría de los escenarios esto es suficiente. Pero si trabaja con la hoja de cálculo de forma intensiva, hay un par de mejoras:
- Añadir «Seleccionar todo» / «Deseleccionar todo». Dos botones en el formulario HTML que marcan o desmarcan programáticamente todas las casillas. Un par de líneas en JavaScript, y se ahorra una docena de clics en un rango grande.
- Reemplazar la coma por otro delimitador. En la función
fillCell, la líneas.join(', ')une los valores con una coma. Si sus datos contienen comas como parte del valor, reemplace con;o|. - Actualización automática al cambiar de celda. En lugar de hacer clic manualmente en «Actualizar validación», puede adjuntar un activador al evento de selección de celda (
onSelectionChange), pero esto requiere un código ligeramente más complejo y la instalación manual del activador.
El código fuente del script es una adaptación de la solución de Alexander Ivanov, publicada por Arthur Attwell en GitHub Gist. También puede encontrar discusión de la comunidad y mejoras allí.
A continuación, un videotutorial en inglés, si prefiere ver en lugar de leer:
⁉️🤔 Preguntas frecuentes
El script no aparece en el menú después de guardar. ¿Qué debo hacer?
Actualice la página de la hoja de cálculo (F5 o Ctrl+R). Si eso no ayuda, verifique que la función se llame exactamente
onOpen(las mayúsculas importan) y que no haya errores en el editor de scripts: Ver → Registros mostrará el seguimiento de la pila. A veces ayuda cerrar el editor de scripts y volver a abrirlo.
La barra lateral se abre, pero no hay casillas de verificación, solo un mensaje sobre Validación de datos.
Esto significa que la celda seleccionada no tiene validación de datos por rango. Seleccione la celda para la cual configuró la validación en el Paso 1. Si la validación está configurada para un rango de celdas en lugar de una, asegúrese de que la celda activa sea exactamente la que está en el rango.
¿Se puede usar el script en varias hojas de una misma hoja de cálculo?
Sí. El script está adjunto al contenedor (hoja de cálculo), no a una hoja específica. La validación de datos funciona a nivel de hoja, configúrela en las hojas necesarias y la barra lateral recogerá los valores de la celda activa independientemente de la hoja.
Después de seleccionar los valores, la celda muestra un error «Valor no válido».
Activó «Rechazar entrada» en la configuración de validación de datos. Regrese a Datos → Validación de datos, seleccione «Mostrar advertencia» en lugar de «Rechazar entrada». Si los datos son críticos, deje la advertencia, no bloquea la escritura por parte del script.
El script solicita acceso a la cuenta de Google, ¿es seguro?
Sí. Los permisos son necesarios para
SpreadsheetApp.getActiveRange()(leer datos de la celda) ySpreadsheetApp.getUi()(mostrar menú y barra lateral). El script solo funciona dentro de su hoja de cálculo y no tiene acceso a otros archivos en Drive. La lista completa de permisos es visible en la ventana de autorización.
Qué script de selección múltiple instalar en su hoja de cálculo
La solución descrita es un marco de trabajo mínimo funcional. Dos archivos, ni una sola biblioteca externa, lógica clara. Para el seguimiento de gastos, etiquetado de tareas y cualquier escenario donde necesite escribir múltiples valores de una lista de referencia en una celda, es más que suficiente.
Si trabaja intensamente con Google Sheets, consulte la documentación de Apps Script. Las capacidades van mucho más allá de las casillas de verificación: envío automático de correos electrónicos cuando una celda cambia, generación de documentos a partir de plantillas, integración con Google Calendar. Comience con este script y, quién sabe, quizás escriba sus propias automatizaciones.



