Casillas de verificación maestras para las hojas de cálculo de Google con Apps Script

Que levante la mano el que no esté de acuerdo con eso de que las casillas de verificación son un invento maravilloso. Casi tanto como las hojas de cálculo (de Google).

Con ambas cosas (casillas y hojas de cálculo) podemos hacer listas (a los seres humanos nos va eso de hacer listas, cuanto más largas mejor, al parecer).  Y marcar o seleccionar elementos, pinchando compulsivamente sobre estos pequeños pero tranquilizadores artefactos 👉☑️.

Y es más, hablando de hojas de cálculo de Google, es posible que sepas ya que si seleccionas un conjunto de celdas que contiene múltiples casillas de verificación y pulsas la barra espaciadora con delicadeza (y sin ella también, pero igual se estropea antes), todas cambiarán obedientemente de estado al unísono.

Seleccionar + Espacio = ¡Magia!

E incluso dicen por ahí que hay algún que otro complemento para hojas de cálculo de Google que es capaz de lograr ya no solo una activación o desactivación solidaria, sino también la conmutación del estado individual de cada casilla de verificación seleccionada.

Usando HdC+ para conmutar el estado de múltiples casillas de verificación.

Ocurre sin embargo que, en ocasiones, el intervalo de casillas de verificación sobre el que deseamos actuar es muy extenso y resulta poco práctico realizar una selección múltiple. Estoy pensando, por ejemplo, en una lista de alumnos, contactos, elementos de inventario u otras entidades que deban ser marcadas para que, tal vez, un estupendo script GAS realice un proceso automatizado en bloque.

Un script GAS que permite generar, actualizar y comunicar los planes de recuperación individualizados de FP.

¿No sería fantástico poder hacer simplemente clic en una casilla de verificación ☑️ y que todas las contiguas situadas por debajo, en la misma columna, cambiaran de estado automáticamente?

Pues sí, lo sería. Y lo mejor de todo es que usando Google Apps Script (GAS) la cosa se resuelve en mucho, mucho menos tiempo del que lleva escribir estas líneas. Si es que donde se ponga el código, que se quite el "rollo", ¿verdad? 😬

Pues eso es precisamente lo que hace este mini Apps Script que te presento: cambia automáticamente el estado de todas las casillas de verificación contiguas que se encuentran en la misma columna,  justo por debajo de la que ha sido modificada. Y lo hace únicamente cuando esta última no tiene ninguna otra justo encima. Eso y solo eso (que no está mal).

Pero igual con un GIF animado va a quedar más claro...

Un tinglado de casillas de verificación maestro - esclavo, en acción.

Si me dices que no mola... muero.

Cosas a tener en cuenta:

  • No hay que identificar o etiquetar de modo alguno los intervalos de celdas con casillas de verificación que quieras conmutar al ritmo de otra. Solo asegúrate de colocar una de tipo "maestro" justo encima de la primera celda del intervalo y listo. Esto, que simplifica las cosas, puede hacer que se tuerzan a veces, como te puedes imaginar. Y es que si quieres evitar este comportamiento tendrás que separar, usando una fila de pequeña altura, por ejemplo, aquellas casillas de verificación contiguas dentro de una misma columna que no deban cambiar de estado de manera solidaria (ortopédico, lo sé).
  • El script creará un menú en las hojas de cálculo en las que lo utilices para controlar su funcionamiento. Este ajuste (activado / desactivado) es por usuario, el script puede estar activado para algunos editores del documento y permanecer inhibido para otros.
El menú del script no puede ser más escueto.

Y uno de mis artículos sobre GAS-cosas no estaría completo sin una cierta disección del código.

Pero como las últimas cosillas que he publicado han sido más bien áridas (por no decir que un poco tostones, para qué nos vamos a engañar), en esta ocasión he pensado en hacer algo diferente, más ligerito, un pequeño experimento para explicarte de otra manera cómo funciona este apañado pero, por otra parte, muy muy sencillo script.

Así que... ¡dentro GAS-infografía interactiva

👀 Probablemente quieras visualizarla a pantalla completa, encontrarás el icono correspondiente en su parte inferior derecha ↘️.

El código íntegro del script lo encontrarás en este repositorio de GitHub. Solo tienes que copiarlo y pegarlo en el editor de secuencias de comandos de la hoja de cálculo en la que lo necesites.

https://github.com/pfelipm/mastercheckboxes

También puedes probarlo, así en plan rapidito, de este modo:

1️⃣ Abre el editor de secuencias de comandos en la hoja de cálculo en la que quieras realizar las pruebas, pega estas líneas de código y guarda los cambios.


function onEdit(e) {
  Mastercheckboxes.onEdit(e); 
}

function onOpen() {
  Mastercheckboxes.onOpen();
}

function toggleMasterCheckboxes() {
  Mastercheckboxes.toggleMasterCheckboxes();
}

2️⃣ Añade al proyecto GAS la biblioteca con este ID:

1j69WkOh76-BGtWFL1NYUawklurDc5Lz6DJfSVW_-14_omJ1xEeKTrbVP

Haz clic en Buscar, selecciona una versión (la 1 en el ejemplo), mantén el identificador propuesto y a continuación de nuevo en Añadir.

Consumiendo el script como biblioteca.

3️⃣ Recarga la hoja de cálculo. Verás que tras hacerlo aparece el menú del script. Actívalo y ya puedes jugar con él.

Por último, puedes hacerte una copia de esta hoja de cálculo de ejemplo para comprobar cómo funciona esto en directo.

En cualquier caso, seguro de que te costará cerocoma integrar este código en tus propios proyectos, que sería lo suyo.

¿Siguientes pasos?

Pues claro. Una mejora inmediata consiste en añadir un sistema de lista blanca (o negra) que permita limitar los intervalos de celdas en los que se produce esta conmutación automática de las casillas de verificación. Pero seguro que ya habías pensado en esto, ¡a que sí! ¿Te animas? La implementación es relativamente sencilla y constituye un buen ejercicio si te estás iniciando en la programación en GAS... de hecho, todo este artículo podría haber sido un BAS, pero bueno, ha salido como ha salido.

¿Estás vaguete y no te apetece bajar al barro del editor de secuencias de comandos de Apps Script para introducir mejoras? Házmelo saber en la caja de comentarios de aquí abajo o respondiendo a cualquiera de las publicaciones en mis redes sociales en las que he compartido este artículo. ¡Si veo que hay suficiente interés yo me ocuparé de esa modificación 😏!