HdC+, una minicolección creciente de funciones para hojas de cálculo


Ahora que tras GEG Valencia 2019 voy recuperando el ritmo de trabajo más o menos normal, sigo publicando cosillas que tengo a medias para no olvidarme de ellas y mantenerlas en el horizonte de trabajo próximo. Hoy le toca a esto que he llamado HdC+, a falta de otra denominación más imaginativa y significativa de la que carezco, por el momento.

Se trata de un conjunto de pequeños y sencillos scripts que tenía por ahí en mi lista de por - hacer,  que quizás te resulten de cierta utilidad trabajando con hojas de cálculo de Google, y que ayer por fin encontré un momento para montar. Paso a explicarte para qué sirven. Lo primero y principal, si quieres acompañarme, es que te hagas una copia de esta plantilla de hoja de cálculo, que incluye el código GAS necesario, que por otro lado es muy, muy sencillo. Quizás te interese mirar bajo el capó, como suelo decir, para aprender cómo funciona.

Plantilla HdC+

Una vez dispongas de tu propia copia de trabajo y autorices la ejecución del script que incluye (únicamente accede a la hoja de cálculo en la que reside), verás que aparece un menú denominado HdC+ en la barra superior, como es habitual en estos casos.

HdC+ en acción.

Veamos qué sabe hacer, por el momento, HdC+.

Manipular la capitalización del texto

Disponemos de tres funciones que afectan a las celdas que contienen texto en un rango previamente seleccionado:
  • Convertir las iniciales de cada palabra a mayúsculas.
  • Convertir todo a mayúsculas.
  • Convertir todo a minúsculas.
Al igual que en el resto de funciones que siguen, cualquier forma de selección está soportada (columnas, filas, rangos disjuntos con CTRL, etc.).  Del mismo modo, las acciones realizadas por el script se pueden deshacer y rehacer normalmente.

Editando la capitalización del texto.

Desordenar filas y columnas

En ocasiones queremos utilizar una hoja de datos con información real delante de una audiencia con fines didácticos o simplemente demostrativos. Para tratar de ofuscar de algún modo la información, en estas circunstancias resulta útil desemparejar el contenido de las distintas columnas (campos) correspondientes a cada uno de los registros representados (filas). De hecho, en un tuit previo ya presenté una función personalizada justo para esto:

Presentando la función BARAJAR().

Hacerlo mediante una función personalizada tiene sus ventajas e inconvenientes. Entre estos últimos se encuentra el hecho de que estamos obligados a copiar los datos "barajados" y hacer un pegado especial (solo valores) para que dejen de desordenarse cada vez que se produce un recálculo de las celdas con funciones. Por eso me ha parecido buena idea ofrecer ahora una nueva versión de esta funcionalidad que no presente este particular comportamiento, al ser accionada manualmente desde un menú. Y de paso añado la posibilidad de hacer lo mismo pero con las columnas (o filas, según se mire), aunque de entrada me parece menos útil.

Ofuscando (levemente) la información.

A raíz de un cruce de tuits con Dani Amo ando pensando en algún otro tipo de anonimización más fuerte, quizás combinando un hash MD5 o algo así con un subconjunto de caracteres tomados del contenido de cada celda. Veremos.

Generador de nombres y NIFs

A menudo me veo en la necesidad, en formaciones, de utilizar tablas que recogen información de alumnos, profesores y otras personas humanas. Por alguna razón probablemente relacionada con la forma en que funcionan nuestras cabecitas, cualquier demostración de fórmulas, funciones, etc. sobre datos que parecen reales le sienta mejor al cuerpo que cuando lo que tenemos delante son cosas como Alumno1, Alumno2... Con esta funcionalidad basta con seleccionar un rango de celdas para que el script conjure personas imaginarias utilizando los 200 nombres y 100 apellidos más populares en España.

Lo sé, esto es una chorrada. Pero costaba muy poco meterle mano. Por cierto, ¡qué bien me han venido IMPORTHTML(), NOMPROPIO() y JOIN() para robar y preformatear las listas de nombres antes de enchufárselas al código GAS mediante sendos vectores.

¿Quién ha dicho que los scripts no tienen imaginación?

Como véis nuestra función es lo suficientemente espabilada como para desparramar ordenadamente primer apellido, segundo apellido y nombre cuando detecta que se han seleccionado, exactamente, tres columnas. En caso contrario (cualquier número de columnas distinto de 3) inundará todas ellas con esos tres elementos convenientemente separados por espacios y una coma entre segundo apellido y nombre. Por otro lado, hay que tener en cuenta que no se realiza ningún tipo de control para evitar o minimizar la presencia de "personas" repetidas.

Pues esto es lo que hay y así se lo hemos contado.

Es probable que vaya enriqueciendo las habilidades de HdC+ a medida que se me ocurran cositas. Cualquier sugerencia será más que bienvenida. Si mola (y sé), la implemento.

Si veo que HdC se convierte en algo medianamente útil probablemente lo empaquete como complemento y lo suba a la tienda de Google, de modo que sea fácilmente "enchufable" a cualquier hoja de cálculo sin necesidad de tirar de la suministrada más arriba como plantilla o copiando y pegando el código en las tuyas.

Comentarios