Eventos recurrentes en Google Calendar para tus horarios de clase con Apps Script y HaC

¡Hola de nuevo! 👋

Hace cosa de dos años publicaba una función personalizada Apps Script para extraer una lista tabular de sesiones de clase a partir de un horario semanal, capaz además de agrupar las sesiones de la misma asignatura impartidas en el mismo horario en distintos días de la semana.

Tuit en el que se publicaba la función Apps Script de extracción de eventos a partir de horarios de clase.
Aquí empezó todo...

En aquel momento compartí un repositorio de GitHub con el código de la función y algunas indicaciones de uso, mencionando que aquello no era más que la primera parada en una hoja de ruta que debía conducir a la generación automatizada, o al menos asistida, de eventos en Google Calendar.

Animación que muestra la extracción de eventos a partir de un horario semanal.
Paso 1 de n: Identificar sesiones semanales con la función EXTRAEREVENTOS().

La idea era montar un "tinglado", como a mí me gusta llamar a estas cosas, para facilitar la generación y mantenimiento de calendarios docentes y de ocupación de aulas en el contexto de las actividades de un centro de formación.

El proyecto durmió durante una buena temporada el sueño de los (scripts) justos, hasta que a comienzos de este curso 22/23, ha cristalizado por fin en una herramienta de uso interno, bastante fea, que a mí me ahorra (¡y espero que ahorrará en el futuro!) mucho tiempo... lo que una vez superado el medio siglo de vida ya no es cosa menor.

Animación que muestra la generación de eventos en Calendar desde una hoja de cálculo.
Un GAS-tinglado (sí, bastante feo) para generar eventos a partir de tablas y más tablas en una hoja de cálculo.

Pero como las fealdades es mejor guardárselas, he dedicado unos ratos durante este siempre ajetreado primer trimestre escolar, que ya nos hemos pulido, a construir un artefacto un poco más presentable.

Este artículo y el desarrollo Apps Script que en él presento supone por tanto para mí saldar una cierta deuda (tengo más 😅), contraída conmigo mismo y con la comunidad educativa hace la friolera de dos años. Que eso de prometer cosas y luego hacerse el loco es cosa de... bueno, mejor no lo digo.

Pues eso, que con todos ustedes 🎉...

Pues esto mismo es HaC.

HaC es una plantilla construida sobre una hoja de cálculo de Google propulsada por Apps Script que espero te resulte más agradable de utilizar que el engendro espantoso que puedes ver en la animación de hace un momento. Y si no, tal vez al menos te sirva como punto de partida o inspiración para generar tu propia solución de automatización, que ya sabemos que los hijos e hijas de uno son siempre los más guapos y guapas.

¿Entonces tienes un rato para mí? Si es así, acompáñame para averiguar qué puede hacer HaC por ti. 

Imagen con el texto: "Reading time: 45 minutes".
¿45 minuten? ¡Imposible, seguro que son menos!

Y si además eres un poco 🤓, te apetece poner la hoja de cálculo del revés y mirarle a los ojos desafiante al script GAS que que le confiere superpoderes, no te pierdas el extenso README.md del repositorio que enlazaré al final de este artículo, en él encontrarás balleno 🐋 del bueno, como le gusta decir a mi queridísima compañera en GEG Spain, María Barceló.

👇 ¡En resumen! 👇
En este artículo te explico cómo funciona HaC, una plantilla de hojas de cálculo de Google + Apps Script que automatiza la creación de eventos periódicos en Google Calendar a partir de horarios de clases semanales para reflejar la actividad de los docentes y el uso de las aulas de tu centro.

TABLA DE CONTENIDOS

HaC = Horarios + Calendar

Un poco (más) de contexto antes de entrar en materia para entender qué problema pretende resolver 💃 HaC.

En este artículo que publiqué en mi otro blog en septiembre del año pasado encontrarás una explicación detallada del modo en que preparo los horarios de las clases de mi centro usando hojas de cálculo de Google.

Montando horarios con las hojas de cálculo de GoogleImagen de cabecera motivacional para artículo enlazado.

Sí, soy consciente de que existen estupendas aplicaciones de generación de horarios que, a partir de una información de entrada y de un conjunto de restricciones, exploran miles de posibilidades y generan múltiples alternativas a la velocidad de la luz. Pero por razones que no vienen al caso, yo prefiero hacerme un juanpalomo y prepararlos artesanalmente. Llámame clásico.

Pero volvamos al artículo anterior.

Resumiendo bastante, la cosa va inicialmente de "pintar" las clases semanales de cada grupo usando celdas con colorines en una tabla...

Un horario de una especialidad de FP con la relación de módulos, docentes, aulas y una tabla que muestra todas las sesiones de clase semanales.
Un horario de los de toda-la-vida.

...de modo que mediante una serie de fórmulas se obtengan posteriormente y de manera automática los horarios personales de cada docente y los de uso de las aulas.

Diagrama de la estrategia de preparación de horarios de clase.
De los horarios de grupo a los de docentes y aulas, automáticamente.

El artículo explica de manera muy detallada el modo en que se ha diseñado la hoja de cálculo y las fórmulas (una por una) que hay en ella, además de otras cuestiones que en absoluto me parecen menores relacionadas con la usabilidad y el control de errores.

Pero esto no nos interesa ahora, así que pulsemos la tecla de avance rápido ⏩ hasta su última sección: Balance, limitaciones y siguientes pasos . Anda, pégale una leída rápida y vuelve por aquí, te espero.

Bien, habrás visto que en la parte final de esa sección decía esto:

La continuación natural de todo lo que te he contado tiene que ser la generación, a partir de los horarios que ya tenemos en esas familiares y tranquilizadoras estructuras tabulares denominadas tablas, de eventos en calendarios de Google Calendar.

Y aunque en los párrafos finales de aquel artículo de marras ya mostraba en funcionamiento la seminal función EXTRAEREVENTOS(), supongo que en un intento flagrante de elevar la tensión dramática de la narrativa (las vueltas que hay que dar para no escribir cliffhanger), la cosa se quedó ahí.

Pero eso ya te lo había contado nada hace un momento.

Bueno, el caso es que la cosa está clara: montamos los horarios, extraemos sesiones de clase y queremos trasladarlas automágicamente a Google Calendar en forma de eventos periódicos que se repiten entre las fechas de inicio y fin de la actividad formativa a la que pertenecen. 

Estamos de acuerdo, ¿verdad? Sigo.

Estoy seguro de que el flujo de trabajo que usamos en mi centro para gestionar las clases usando Google Calendar te resultará familiar. Venga, te lo resumo ahora mismo en estos 4️⃣ pasos:

1️⃣ Por una parte creamos una serie de calendarios docentes en los que se registran exclusivamente los eventos que representan las clases impartidas por cada instructor. Estos calendarios se exponen dentro del dominio de modo que sus eventos sean públicos. Además, ciertos colaboradores, miembros de un grupo del servicio de Grupos de Google, tienen permisos de edición sobre ellos para que puedan echarme una mano a la hora de gestionarlos (ya sabes, liderazgo distribuido y esas cosas 😉). Evidentemente, tanto su visibilidad como permisos de acceso pueden adaptarse a otras necesidades, contextos, etc.

Permisos de acceso y ajustes de compartición de un calendario docente.
Visibilidad de los calendarios docentes.

⚠️ ¡Cuidado! Estos no son los calendarios personales de los docentes, que siguen siendo privados, por supuesto, y pueden contener muchos otros eventos distintos a las clases impartidas, eventos que obviamente no tienen por qué exponerse en ningún momento de manera pública.

En mi centro uso un prefijo en el nombre de los calendarios docentes públicos («AG:») para diferenciarlos del resto.

Lista de calendarios docentes públicos. Su nombre comienza por "AG:".
Algunos profes de mi centro, entre los que obviamente me encuentro, en Calendar.

2️⃣ Por otra parte, tiramos de las funciones que ofrece Google Workspace para gestionar recursos de tipo espacio de reuniones. Los administradores del dominio pueden utilizar la consola de administración para definirlos en un directorio general (y comprobar cómo se están usando en un panel de mando muy chulo, por cierto).

Cuadro de diálogo de añadir recurso de calendario en la consola de administración de Google Workspace.
Creación de un recurso de tipo espacio de reuniones (para nosotros, ¡un aula!).

Estas salas de reuniones (que sí, aulas) pueden añadirse a la lista general de calendarios desde «Otros calendarios» como un calendario más.

Explorando los recursos del dominio...

Y como calendarios que son, disponen de una dirección de correo electrónico propia, permisos de acceso y uso compartido, además de todo lo esperable en un calendario, por supuesto.

Ajustes de un recurso de calendario.
Ajustando la configuración de los calendarios de salas (recursos) .

Lo interesante es que, una vez definidos y convenientemente compartidos, los recursos de calendario pueden ser "invitados" a cualquier evento, como una personita más. Y si se trata de espacios de reuniones incluso disponen de una pestaña específica denominada «Salas».

Cuadro de diálogo de creación de un evento, se aprecia que una sala ha sido invitada.
Añadiendo una sala a un evento al crearlo.

☝ Si no estás muy familiarizado con los recursos de calendario deberías dedicar unos minutos a leer cuidadosamente todo lo que cuentan en esta página de la ayuda para el (nunca suficientemente bien apreciado en su justa medida) administrador de Google Workspace.

3️⃣ Para cada sesión de clase generamos un evento en el calendario público 🗓️ del instructor que la imparte, evento al que se añade la sala (aula) en la que tiene lugar. Y para redondearlo todo, invitaremos también al propio docente, de modo que al aceptar la invitación al evento quede incorporado a su calendario personal, junto a sus eventos privados.

4️⃣ Y voilà, ya solo nos queda incrustar los calendarios de instructores y aulas en nuestra intranet baratuchi, montada con Sites como quizás la tuya, para comunicar de un modo sencillo esta información a todos los miembros del equipo para los que resulta relevante.

Secciones de uso de las aulas y horarios del personal en una intranet construida con Google Sites.
Secciones de aulas y horarios en la intranet de un centro educativo cualquiera.

Como hemos reservado espacios al crear los eventos que representan las clases en los calendarios públicos de los instructores, de rebote nos encontraremos con que también aparecerán automáticamente en los calendarios de cada aula. Por ejemplo, así se ve el calendario que recoge el uso de nuestra aula 14 en la intranet del centro:

La información (oportuna y accesible para las personas adecuadas) es poder.

En definitiva...

🎯 Para que nuestros calendarios reflejen las clases del centro hay que:

  1. Identificar las sesiones de clase semanales, agrupando aquellas que tengan lugar a la misma hora pero en distintos días de la semana, siempre que instructor y aula sean comunes.
  2. Crear eventos en Calendar en los calendarios docentes para cada una de ellas indicando:
    1. El nombre del evento, que debería establecerse de manera que fuese representativo y guardase cierta homogeneidad en su nomenclatura.
    2. Su hora de inicio y fin.
    3. El día o días de la semana en los que tiene lugar.
    4. El día de inicio y fin de la clase, es decir, de la serie de eventos periódicos.
    5. El aula (espacio) en la que tiene lugar.
    6. El instructor invitados (el propio profe que la imparte).

Fácil y práctico, pero por propia experiencia te digo que también un rollo, especialmente a comienzos de curso, cuando hay que alimentar intensamente a la bestia (Google Calendar) con las clases de todos los grupos que inician. Quién sabe, quizás te apetezca entregarte a una tarea repetitiva como esta, hacer que tu mente baje de revoluciones y entre en trance sanador 🧘‍♀️.

No obstante, a una media de 10 o 15 sesiones semanales  de clase por grupo de formación reglada (fácilmente más), no tienes más que echar cuentas para apreciar la magnitud del asunto. Y no es solo cuestión de tiempo, porque cuando llevas un rato pinchando y seleccionando opciones de un desplegable aquí y allá es fácil, muy fácil, meter la pata y mandar a la profe de Tecnología al siglo XXII (seguro que ahí está bien) o asignarle la clase de los viernes de Programación de Servicios y Procesos al profe de Escaparatismo, que igual no siente tan entusiasmado.

Pero como seguramente ya sepas, automatizar mandangas como esta es la razón de ser de Apps Script.

Usando HaC

HaC se distribuye como una plantilla de hojas de cálculo de Google. Haz clic en el enlace y obtén una copia.

👉 Horarios-a-Calendar (HaC) 👈

Animación que muestra algunas de las hojas incluidas en HaC.
HaC, a vista de pájaro. Sí, podrás usar tantos horarios semanales como quieras en una misma plantilla (faltaría más).

Y luego...

 Haz esto...En la hoja...
1️⃣Descarga la lista de calendarios públicos de los instructores  y, de manera opcional, agrega sus direcciones de correo electrónico,  si es que vas a enviarles invitaciones a los eventos de clase que generes.👥 Instructores
2️⃣[OPCIONAL] Obtén la lista de salas de tu dominio Google Workspace, si es que usas recursos de calendario y quieres gestionar su reserva con HaC.🏫 Salas
3️⃣Genera nuevos horarios semanales, distribuye tus clases y asigna instructores y salas.⏰ Horarios
4️⃣Introduce el nombre de la hoja de tu horario semanal, revisa las clases detectadas, añade otras manualmente, si lo deseas, y genera eventos periódicos en Google Calendar para ellas entre la fecha de inicio y fin de las clases.➕ Gestión eventos
5️⃣[OPCIONAL] Revisa el histórico de eventos generados en el panel de registro usando sus cómodos controles de filtro.📦 Registro eventos

Todas estas "partes móviles" se relacionan entre sí del siguiente modo:

Diagrama de bloques de HaC.

Para desarrollar cada etapa del proceso usaremos el menú del script:

Menú de comandos de HaC.

Hablemos ahora de cada una de las etapas de esta secuencia y de las hojas de datos que intervienen en cada una ellas.

Instructores

-| 1️⃣ |-

La gestión de los instructores se realiza en la hoja «👥 Instructores». Dirígete a ella e introduce en la celda «B2» el prefijo que utilizas en los nombres de los calendarios públicos de tus instructores para diferenciarlos del resto (hasta 6 caracteres).

Celda B2 con el prefijo "AG:".

-| 2️⃣ |-

Haz clic en el comando «👥 Buscar calendarios instructores» en el menú de HaC.

Menú de HaC con la opción de buscar calendarios de instructores destacada.

HaC siempre te pedirá confirmación antes de realizar cualquier proceso, digamos, delicado.

Cuadro de diálogo de confirmación previo a la búsqueda de calendarios docentes.

Una vez hagas clic en «Aceptar», HaC buscará todos los calendarios a los que tengas acceso en Google Calendar cuyos nombres incluyan el prefijo especificado y descargará el nombre e ID (una dirección de correo electrónico raruna) de cada uno de ellos en las columnas «F» y «G».

Estas columnas quedan normalmente ocultas en un grupo de columnas escamoteable para evitar ediciones accidentales. Si te quedas más tranquilo, despliégalas momentáneamente para asegurarte de que el comando anterior realmente ha recuperado información.

Columnas F y G de la tabla de calendarios docentes con información obtenida de Calendar: nombre e ID de calendario.
Columnas ocultas en la tabla de datos de instructores.

-| 3️⃣ |-

Ahora debes:

Tabla de instructores con números (1 a 3) que señalizan las columnas en las que debe introducirse información.
Introduciendo la información del equipo docente en HaC.

1️⃣ Introducir manualmente las iniciales (longitud máxima de 6 caracteres) que vas a utilizar para identificar a cada docente en HaC en la columna «Iniciales». Estas iniciales las usarás más adelante cuando construyas los horarios semanales de cada uno de tus grupos.

2️⃣ Seleccionar en la columna «Calendario» el calendario docente público utilizado para las clases de cada instructor. En el desplegable aparecerán los nombres de los calendarios de instructores que has obtenido hace un momento. Verás que en la columna «ID calendario» se mostrará automáticamente la dirección de correo electrónico del calendario seleccionado.

3️⃣ Si además pretendes enviar invitaciones a tus profes, de modo que puedan agregar las clases cómodamente a sus calendarios personales al aceptar la invitación, deberás introducir las direcciones de correo electrónico correspondientes en la columna «Correo electrónico». Esto es opcional, naturalmente. Además debes saber que HaC no se detendrá con error en ningún caso al generar los eventos en Calendar si le pides que invite a los instructores pero faltan algunas de sus direcciones de correo (este comportamiento puede modificarse fácilmente, pero tendrás que leer la documentación técnica del script para averiguar cómo).

☝ HaC usa indicadores visuales para llamar tu atención sobre posibles problemas detectados o que podrían producirse. En esta hoja, por ejemplo, para señalizar que falta información sobre los instructores o se han introducido datos duplicados.

En general, el color naranja 🟧 se utilizará para advertirte de problemas leves, en tanto que el rojo 🟥 se reserva para los más críticos. Consulta las claves informativas que encontrarás en las celdas coloreadas de amarillo 🟨 para averiguar su significado específico en cada hoja (basta con que pases la rata por encima). En ellas también hay indicaciones, advertencias y consejos de uso que te resultarán de utilidad.

Animación que muestra las distintas notas contextuales en la hoja de gestión de instructores.
Festival de notas y colorines, probablemente excesivo, pero por una buena causa:  mantenerte informado.

Salas (aulas)

Si en tu dominio dispones de recursos de calendario de tipo sala, no tienes más que hacer clic en «🏫 Buscar salas» para que su información básica, así como nuevamente los identificadores de sus calendarios, aparezcan en esta tabla y HaC pueda utilizarlos para realizar las reservas correspondientes al crear los eventos de las clases.

Menú de HaC con la opción de buscar salas destacada.

La información de las salas aparecerá, como cabe esperar, en la hoja «🏫 Salas».

No lo he mencionado cuando hablábamos hace un momento de los calendarios de instructores, así que lo hago ahora. HaC emitirá mensajes de estado como este para informarte de qué está haciendo en cada momento...

... y además escribirá en la parte superior de la tabla la fecha y hora de la última ejecución de cualquiera de los procesos de obtención de calendarios que se haya completado con éxito.

Celda que muestra la fecha en la que se realizó la última obtención de calendarios de salas del dominio.

Podrás usar más tarde los nombres de las salas, que aparecen en la columna «Nombre», para establecer en qué aula se impartirán cada una de tus clases cuando confecciones los horarios semanales.

Tabla de salas con datos de muestra.
Recursos de calendario de tipo sala del dominio.

Al igual que el envío de invitaciones a instructores, la reserva de salas es una característica que puedes utilizar o no. Si no es el caso, simplemente ignora todo lo dicho en este apartado y pasa raudo y decidido al siguiente.

Horarios semanales

Vamos ahora a generar los horarios semanales de cada grupo.

Para ello, HaC cuenta con un comando que realizará una copia de la hoja «⏰ Plantilla horario», que por defecto queda oculta.

Menú de HaC con la opción de crear un nuevo horario semanal destacada.

Sí, ya sé que duplicar una hoja resulta trivial , pero no me costaba nada incluir un comando específico para ello, de este modo mantenemos la plantilla fuera de la vista, evitando así que ocupe un espacio a menudo escaso en la barra inferior del editor de hojas de cálculo.

Cuadro de diálogo de petición del código del nuevo horario.

A continuación, HaC te preguntará insistentemente el código del horario, que se utilizará para asignarle un nombre a la hoja de trabajo que lo contendrá, hasta que se dé una de estas dos circunstancias:

  • Introduzcas un código de un máximo de 8 caracteres que no se corresponda con el nombre de una hoja que ya existe y hagas clic en «Aceptar».
  • Pulses el botón «Cancelar».
Mensaje de confirmación de creación de una nueva hoja de horario semanal.

Encontrarás el horario generado en el extremo izquierdo de la barra inferior de pestañas, que seguro que ya conoces de sobra.

Plantilla de horario semanal con 13 elementos relevantes señalizados mediante círculos numerados.
Es probable que pases unos buenos ratos montando heroicamente tus horarios en hojas como esta.

La hoja de horario semanal está dividida en dos secciones. Utilizarás la parte superior (elementos 1 - 8 en la imagen anterior) para establecer el horario semanal de clases. En la parte inferior (elementos 9 - 13) aparecerán automáticamente las sesiones de clase extraídas del horario, cuya definición deberás completar indicando instructor y sala.

Programación de las sesiones de clase

Veamos qué representan cada uno de esos círculos numerados que aparecen en la captura anterior (tenla a mano mientras lees lo que sigue).

0️⃣1️⃣ [OPCIONAL] Introduce aquí el nombre (legible) que utilizas para identificar el grupo o la especialidad formativa cuyo horario estás construyendo. También puedes omitirlo, aunque HaC mantendrá entonces encendida, como un árbol de Navidad, una alerta de color ámbar para manifestar su inquietud. En cualquier caso, esta información es totalmente opcional y no se utilizará posteriormente para generar los horarios en Google Calendar, pasa de ella si eso te hace sentir mejor.

0️⃣ 2️⃣ Escoge horario de mañanas o de tardes. Este control actúa sobre los valores de hora que se muestran en las columnas «A» e «I». Estos valores representan la hora de inicio y fin de cada franja horaria.

0️⃣ 3️⃣ Selecciona la duración de cada franja horaria. Si ninguna de las opciones disponibles te cuadra, no tienes más que seleccionar el ajuste «Manual». En ese caso aparecerá un icono con forma de mano abierta 🖐 junto a los rótulos «Inicio» y «Fin» que se encuentran en la parte superior, a ambos lados del horario, para indicar que ahora debes introducir tú mismo la hora precisa de comienzo y fin de cada franja horaria. Esto resulta más tedioso, que duda cabe, pero permite combinar franjas horarias semanales de diferente duración.

V
¿Una mano ahí? Eso indica que has decidido definir las franjas horarias manualmente.

Si intentas modificar directamente las horas de inicio o fin de cada franja horaria sin haber seleccionado previamente el ajuste manual de su duración se producirá un inquietante error que hará desaparecer todos los valores de hora de la tabla. HaC hará te mostrará además este icono ⛔ en la parte superior de la tabla para que recapacites, simplemente elimina la información introducida y a correr.

0️⃣ 4️⃣ Este campo aparecerá prerrellenado con el código que le has facilitado a HaC al generar la copia de la plantilla del horario con la que estás trabajando. Puedes editarlo posteriormente.

0️⃣ 5️⃣ Aquí debes introducir las fechas de inicio y fin de las clases del grupo. No es necesario que te asegures de que ambos coincidan con algún día de la semana en el que exista una sesión de clase en el horario. HaC realizará internamente los ajustes necesarios para que todo cuadre a la hora de generar los eventos en Calendar. Yo suelo introducir en estos campos las fechas oficiales de inicio y fin del curso escolar, sin preocuparme de en qué días de la semana caen.

0️⃣6️⃣  Utiliza estas casillas para definir la hora de inicio de la clases matutinas 🌞 y vespertinas 🌑.  Por defecto la plantilla de clases incluye 14 franjas horarias con una duración predeterminada de 30 minutos. Esto permite cubrir unos horarios típicos de 8:00 a 15:00 y 15:00 a 22:00, pero si necesitas un número mayor de franjas horarias, tal vez porque tus horarios deben ser más granulares, no tienes más que insertar filas, pero asegúrate de hacerlo siempre por debajo de la 9 y por encima de la 22 ⚠️.

0️⃣7️⃣ En la tabla - horario es donde se establecerán las clases de la semana. Introduce la etiqueta identificativa de la materia, asignatura o módulo profesional que se imparte en cada una de las franjas horarias diarias disponibles (yo las llamo clases, sin más). Si en una de ellas no hay ninguna clase, simplemente déjala en blanco.

Escribe un código compuesto por entre 2 y 8 letras o números (también se admiten el guión «-»  y el guión bajo «_») Al hacerlo, el color de fondo de la celda cambiará automáticamente. Seguramente querrás aplicar colores distintos para diferenciar las clases cada de cada asignatura, algo que tendrás que hacer del modo convencional utilizando la herramienta de color de relleno de celdas.

🚨 Nunca combines las celdas de la tabla, todas las franjas horarias deben conservar su atomicidad (copia y pega, que tampoco cuesta tanto). Asegúrate además de introducir el código que corresponda en todas y cada una de las celdas, de acuerdo con la sesión de clase impartida. ¡Una celda en blanco es un tiempo sin clase!

0️⃣8️⃣ Si andas justo de espacio vertical en pantalla, usa este botón para plegar (y desplegar) la tabla horaria y poder apreciar mejor la información que se muestra en la parte inferior de la plantilla. Ahora vamos con ella.

☝ Con HaC he intentado sistematizar y empaquetar de un modo genérico y aislado de otras herramientas el proceso de generación de horarios. Pero como es lógico, tanto la plantilla de hoja de cálculo como el código Apps Script que la propulsa probablemente precisen de ciertas adaptaciones para encajar en tus flujos de trabajo.

En mi caso, el diseño horario de las especialidades que se imparten en el centro ya ha quedado definido previamente en otra hoja de cálculo. Posiblemente también sea el tuyo, así que tira de lo que más convenga (por ejemplo, IMPORTRANGE) para traerte esa información a HaC automáticamente.

Asignación de docentes y espacios en la lista agrupada de sesiones

Vamos ahora con la sección inferior, que resume las sesiones de clase semanales.

0️⃣9️⃣ Aquí verás tanto el cómputo semanal de horas de clase (solo si no se han definido franjas horarias de manera manual) como el número de clases que HaC ha extraído a partir de la tabla superior, de la que hemos hablado hace un momento. Estas sesiones se establecen agrupando todas las franjas horarias contiguas pertenecientes a un mismo día de la semana en las que se imparte la misma materia.

1️⃣0️⃣ Por defecto, HaC tratará de agrupar las sesiones de clase de la misma materia que tienen lugar en el mismo horario pero en distintos días de la semana. Si por alguna razón prefieres que esto no sea así, por ejemplo porque las sesiones son impartidas por distintos instructores o en diferentes aulas, solo tienes que desactivar esta casilla de verificación. 

1️⃣1️⃣ En esta tabla, HaC enumerará las sesiones de clase que ha encontrado en tu horario. El proceso es totalmente automático, solo tienes que ir colocando tus clases en las distintas franjas horarias semanales para que vayan apareciendo aquí en tiempo real.

Animación que muestra la aparición de las sesiones de clase a medida que se construye el horario semanal.
La función personaliza Apps Script EXTRAEREVENTOS(), incluida en la plantilla, es la responsable de esto.

1️⃣2️⃣ La columna «Instructor» de la tabla se utiliza para seleccionar el profe de cada sesión. La lista de instructores disponibles se toma de la hoja «👥 Instructores».

1️⃣3️⃣ Ya por último, solo te quedará por indicar en la columna «Sala» el aula en la que se desarrollará la sesión de clase. La reserva de espacios es una característica opcional en HaC. Es más, ni siquiera cuando elijas recurrir a ella es técnicamente imprescindible escoger un aula para que los eventos puedan generarse con éxito en Google Calendar. Si el aula no se ha especificado HaC tratará de generar el evento sin rechistar, aunque señalizará que le falta esa información cambiando el color de fondo de la celda en la que debería aparecer, pero en la hoja de gestión de eventos, que veremos a continuación.

☝ HaC no ha sido diseñado para que introduzcas información directamente en esta lista en la que se resumen y agrupan automáticamente las sesiones de clase definidas en el horario semanal (aunque si te pones un poco burro puedes lograrlo, claro está).

Ya tenemos todo en su sitio. Solo nos falta empujar delicadamente toda esta información hacia los calendarios docentes y de uso de las aulas en Google Calendar.

Gestión  de eventos en Google Calendar

La hoja de gestión de eventos

Veamos por fin qué se cuece en la hoja «➕ Gestión eventos».

Hoja de generación de eventos con 9 elementos relevantes señalizados mediante círculos numerados.
Esta pestaña constituye el centro de control desde el que vamos a generar eventos en Calendar para las clases

1️⃣ HaC es capaz de gestionar múltiples hojas de horarios semanales. Para indicarle con cuál deseamos trabajar en cada momento introduce el nombre de la hoja seleccionada en la celda «C3».

La hoja indicada debe existir. Además, HaC realizará algunas comprobaciones para tratar de determinar si realmente contiene un horario antes de darla por buena (si te intriga cómo se puede hacer esto sin scripts ni historias, consulta la documentación técnica de HaC).

Mensaje de error al introducir el nombre de una hoja que no existe o no contiene un horario semanal.
No abuses de HaC, no es infalible.

2️⃣ Si todo va como debe, las fechas generales de inicio y fin de las clases del horario que se encuentra en la hoja cuyo nombre acabas de introducir aparecerán en las celdas «E3» y «F3». Esto es puramente informativo, en ningún caso deberás escribir directamente en ellas.

3️⃣ En la tabla aparecerá a continuación toda la información de las sesiones de clase tomadas del horario escogido, información que HaC utilizará posteriormente para generar los eventos correspondientes en Google Calendar.

4️⃣ Fíjate en cómo las fechas efectivas de inicio y fin de cada sesión de clase (columnas «Inicio rep.» y «Fin rep.») se calculan automáticamente, ajustándolas respectivamente al primer día de la semana en que tiene lugar dicha sesión tras el inicio del periodo lectivo general y al último antes de que este haya concluido.

Detalle de las fechas de inicio y fin generales y de las específicas de cada sesión de clase.
Aquí se ajustan las fechas de inicio y fin de repetición para cada sesión de clase semanal.

5️⃣ Puedes seleccionar las sesiones de clase para las que deseas generar (o eliminar) eventos en Calendar utilizando las casillas de verificación de la columna «A». El botón 🔘 en la parte superior establecerá el estado de todas ellas de manera conjunta de modo que cambie el estado del mayor número posible (la idea es ahorrarte clics).

Animación que demuestra el funcionamiento del botón de conmutación general de las casillas de verificación de selección de sesiones de clase.
Un botón de conmutación general (más o menos) inteligente.

☝ HaC ignorará siempre (también al utilizar el botón de selección general) todas aquellas filas de la tabla en las que las columnas «Grupo» y «Clase» estén en blanco, con independencia de su estado de selección.

6️⃣ [OPCIONAL] En la columna «Descripción» puedes anotar información adicional, que se añadirá a los detalles de los eventos generados, por ejemplo el nombre largo de la asignatura que se imparte en esa clase.

Captura de la sección que contiene la descripción de un evento en Calendar.
Información de contexto en la descripción de un evento.

💡 La secuencia de texto utilizada en la descripción admite marcado HTML.

7️⃣ Las columnas «Fecha proceso» y «Resultado» serán rellenadas por HaC cuando se generen (o eliminen) eventos. Aquí aparecerá la fecha y hora de la última operación realizada sobre cada sesión de clase / evento, así como los posibles errores producidos o un mensaje de éxito, en su caso.

Ejemplo de información facilitada en un proceso de generación de eventos.
¡Houston, tenemos un problema con la sala del tercer evento!

8️⃣ Utiliza estos ajustes para configurar ciertos aspectos del funcionamiento de HaC:

Invitar a instructores

HaC trataré de enviar invitaciones a los instructores para que puedan añadir los eventos de las clases que imparten a sus calendarios personales fácilmente.

Si se ha seleccionado esta opción pero el correo electrónico personal del instructor no se encuentra en la hoja 👥 Instructores el evento será generado en Calendar de todos modos.

Reservar espaciosHaC realizará la reserva del espacio (aula) en el que tiene lugar cada sesión de clase. Los eventos a los que no se les haya asignado un espacio se generarán igualmente.
Deseleccionar clases tras procesarlas con éxitoSe desactivará la marca de selección tras generar o eliminar el evento asociado a una sesión de clase con éxito.
Borrar fecha y resultado del proceso previoAntes de comenzar a procesar un conjunto de sesiones de clase se borrará totalmente el contenido de las columnas «Fecha proceso» y «Resultado». También hay un comando en el menú de HaC, bastante innecesario, por cierto 😆, para hacerlo manualmente.

9️⃣ Este botón despliega tres columnas ocultas que son necesarias para generar correctamente los eventos asociados a tus clases en Calendar. Si quieres te contaré más cosas sobre ellas en la documentación técnica de HaC, pero por ahora puedes ignorarlas, no las necesitaremos para nada. Mejor déjalas bien escondidas, lo que no se ve, no se toca, y lo que no se toca no se rompe.

Comprobarás que la hoja de gestión de eventos de HaC contiene numerosas notas con información contextual importante para que puedas utilizar la plantilla de manera efectiva y sin errores.

Animación que muestra las instrucciones de uso contextuales en algunas de las múltiples notas de la hoja de gestión de eventos.
¡La animación muestra una versión preliminar de HaC, algunas notas no dicen exactamente lo mismo que en la versión final!

De algunas cosas que encontrarás en esas notas ya hemos hablado, pero hay algo importante que aún tenemos que comentar.

Y es que aunque el flujo de trabajo que te recomiendo que sigas en HaC es el descrito hasta el momento, la plantilla es lo suficientemente flexible como para admitir la introducción manual de sesiones de clase:

  • De manera adicional a las que se toman de una hoja de horario semanal.
  • En lugar de las sesiones que aparecen en cualquiera de tus hojas de horario.

¿Y esto para qué sirve? Pues no estoy muy seguro, la verdad, pero mi más que evidente TOC me impedía lanzar HaC sin implementar esta posibilidad 😜.

Introducción manual de clases

Si lo deseas, puedes añadir más sesiones de clase a la tabla introduciendo la información necesaria justo debajo de la última importada de una hoja de horario semanal:

ClaseIdentificador descriptivo de la clase (entre 2 y 8 caracteres).
DíasDías de la semana en que tiene lugar, usando las iniciales típicas (L, M, X, J, V, S, D) separadas por comas y sin espacios.
Hora inicioHora de inicio de la sesión, en formato HH:MM.
Hora finHora de fin de la sesión, en formato HH:MM.
InstructorIniciales del instructor (haz doble clic en las celdas de la columna para invocar la lista desplegable de instructores), tal y como aparece en la hoja «👥 Instructores».
AulaNombre del aula, correspondiente a alguna de las que están registradas en la hoja 🏫 Salas (aquí lo mismo, doble clic para que se despliegue la lista de espacios disponibles).
DescripciónInformación de contexto opcional, ya hemos hablado de ella.

Todas las sesiones que añadas comparten necesariamente con las ya existentes los valores generales establecidos para el horario del grupo que puedes apreciar en la parte superior de la tabla:

  • Código del grupo (horario)
  • Fecha de inicio
  • Fecha de fin

En cuanto introduzcas el identificador de una nueva clase verás que el resto de celdas de esa fila se activan para indicarte que HaC está esperando la información que necesita para caracterizar la sesión.

Secuencia de introducción de una sesión de clase adicional de manera manual.
Recuerda el código de colores, naranja problema leve, rojo problema grave. El porqué en las notas contextuales.

La celda correspondiente a la columna «Grupo» se rellenará automáticamente, del mismo modo que las que se encuentran en las columnas «Inicio rep.» y «Fin rep.», en el caso de estas últimas una vez que hayas especificado los días de la semana.

☝ En este modo de funcionamiento, digamos que semimanual, verás que aparece el símbolo ✖️ junto a las etiquetas de encabezado de las columnas mencionadas para recordarte que no debes introducir información en ellas, puesto que su contenido está directamente controlado por HaC.

⛔ ¿Recuerdas este icono?  Aquí también aparecerá, ahora en el extremo superior izquierdo de la tabla de sesiones, para señalizar una situación de error cuando introduzcas información en celdas donde no debes meter mano. Cuando eso ocurra, simplemente borra el valor que has introducido para que toda vuelva a la normalidad y sigue con tu vida.

También puedes prescindir totalmente de programar tus clases en las hojas de horarios semanales. En ese caso no debes indicar ninguna hoja de horario en la celda «C3».

A continuación, tendrás que introducir la información requerida para caracterizar todas las sesiones de clase directamente en la tabla.

Si optas por esta posibilidad comprobarás que el símbolo 🖐 aparecerá en la parte superior de la tabla de sesiones para hacerte saber que has activado el modo de introducción de datos totalmente manual™. Además, sendas ✖️ se mostrarán en las celdas «E3» y «F3», en tanto que las que se veían hasta el momento en otras columnas habrán desparecido.

Hoja de gestión de sesiones en modo totalmente manual. Ahora aparece el símbolo ✖️ en las celdas que correspondientes a las fechas generales de inicio y fin de las clases y desaparece de grupo, inicio y fin de repetición.
Los emojis nunca se equivocan: este es el modo totalmente manual.

Por si no había quedado claro, esto quiero decir que ahora vas a tener que currar un poquito más para definir tus clases. Además de toda la información necesaria en el modo semimanual, que acabamos de ver hace un momento, ahora deberás introducir también el código del grupo y las fechas de inicio y fin de repetición para cada una de ellas:

GrupoCódigo del grupo (hasta 8 caracteres).
Inicio rep.Fecha exacta en la que se producirá la primera repetición de la sesión de clase. Ahora sí debe coincidir ⚠️ con alguno de los días de la semana en los que tiene lugar la sesión, de lo contrario se generará un primer evento "fantasma" en la serie recurrente en Calendar. 
Fin rep.Fecha en la que se producirá la última repetición de la sesión de clase (sin mayores precauciones).

De nuevo te recomiendo encarecidamente que revises las notas de uso que encontrarás en algunas celdas 🟨, al menos las primeras veces que utilices HaC.

Además, HaC usa con intensidad las reglas de validación de datos (acompañadas de los mensajes de error correspondientes) y el formato condicional de las hojas de cálculo de Google para explicarte de qué manera espera que introduzcas la información que necesita.

Generación y actualización de eventos

Una vez te hayas asegurado de que tus sesiones de clase son correctas, solo tienes que seleccionar todas aquellas para las que deseas generar eventos en Google Calendar...

Sesiones de clase seleccionadas en la tabla de generación de eventos.
Me parece a mí que un par de sesiones de clase nos van a dar problemas...

...y usar el comando ➕ Generar/actualizar clases en Calendar del menú de HaC.

Menú de HaC con la opción de generar eventos destacada.

HaC te pedirá confirmación para tirar adelante (como siempre).

Cuadro de diálogo de confirmación previo a la generación de eventos.

A medida que en el transcurso del proceso se vayan generando eventos, podrás ver como la fecha y el resultado de cada operación van a ir apareciendo en las columnas «Fecha proceso» y «Resultado» de la tabla del generador de sesiones. Esto no es absoluto óptimo desde un punto de vista técnico, pero sí bastante entretenido y en cualquier caso  tolerable, en mi opinión, teniendo en cuenta la escala de esta automatización.

Información facilitada en un proceso de generación de eventos.
...pues no andaba muy desencaminado, al parecer.

Al finalizar, se mostrará un cuadro de diálogo con un resumen del número de eventos generados y omitidos (tal vez a causa de algún error o información incompleta).

Cuadro de diálogo con información de resumen del proceso de generación de eventos.

Dicho esto, pongo ahora encima de la mesa dos circunstancias relevantes de las que me gustaría hablarte antes de concluir esta sección.

En primer lugar, HaC dará nombre a los eventos en Google Calendar combinando del siguiente modo el contenido de las celdas en las que se introducido el nombre del grupo, de la clase y las iniciales del instructor:

«GRUPO» «CLASE» («INSTRUCTOR»)
Evento generado por HaC, tal y como aparece en Calendar.

De este modo se presenta de manera compacta la información más importante relativa a cada sesión de clase, tanto en los calendarios docentes como en los que recogen la ocupación de las aulas:

  • Grupo
  • Materia / asignatura / módulo
  • Docente
  • Espacio

En segundo lugar, es posible que tras generar los eventos de un conjunto de sesiones de clase te veas en la necesidad de hacer cambios en el horario semanal. Bien, pues no es necesario que elimines los eventos en Google Calendar de manera manual antes de generar otros nuevos para tus clases actualizadas.

HaC recuerda todos los eventos que se van generando y tratará de impedir que se produzcan duplicados, lo que sería un auténtico lío y además podría ocasionar cierto caos cuando se reservan espacios.

🚨 Para determinar si el evento correspondiente a una sesión de clase determinada ya ha sido generado y debe actualizarse, HaC se fija exclusivamente en la información contenida en las columnas «GRUPO» y «CLASE». 

Todos los eventos previamente generados correspondientes a sesiones que presenten una coincidencia en ambos campos, aunque no hayan sido seleccionadas, serán eliminados
antes de proceder a la generación de los nuevos. HaC entiende que son sesiones de una misma clase (asignatura) que se imparten todas ellas dentro de un único horario semanal.

Cuando quieras realizar cambios en una sesión de clase selecciona también el resto de sesiones de esa misma clase, de lo contrario los eventos pertenecientes a las no seleccionadas se borrarían de Calendar al procesar las que sí has seleccionado.

Mensaje de estado indicando que se están eliminado eventos previos.

Esta estrategia (un poco drástica, es verdad, y seguramente mejorable) garantiza que se puedan modificar horas, días, instructores y espacios sin que se produzcan colisiones en Google Calendar.

Estas colisiones resultarían especialmente indeseables cuando afectaran a las reservas de espacios, dado que en esos casos la sala rechazaría el evento y sería necesario solucionar el conflicto antes de volver a a realizar la reserva (a menos que se desactive el control estricto de conflictos, lo que personalmente no me parece saludable).

Por esa razón, HaC siempre eliminará primeramente todos los eventos previos coincidentes con los que hay en la tabla del generador (fase uno) y solo después se procederá a la generación de los nuevos (fase dos).

🚨 Cosas que debes evitar, puesto que confundirían a HaC:

  • Modificar la denominación del grupo o de las clases (materias).
  • Usar una misma plantilla de HaC para gestionar los horarios del mismo grupo correspondientes a varios cursos escolares.

Eliminación de eventos

Sabiendo todo lo que ya sabemos, esto no tiene mucho misterio.

Menú de HaC con la opción de eliminar eventos destacada.

El comando ✖️ Eliminar clases en Calendar permite borrar los eventos ya generados de las clases seleccionadas.

¡Atención! A diferencia de lo que ocurría al generar (o actualizar) eventos, ahora solo se eliminarán aquellos generados a partir de las sesiones de clase ya registradas que sean idénticas a las seleccionadas (el campo «Descripción» no se tendrá en cuenta en ningún caso).

Ya sé, me vas a decir que este era el comportamiento esperable, en lugar del que exhibe HaC al generar eventos, que no deja ser un tanto impactante. Bueno, es que ahí hacía falta contundencia para evitar esos puñeteros conflictos 👊.

Al igual que en la generación de eventos, aquí también veras como la tabla va mostrando el resultado de cada operación a medida que HaC va procesando las sesiones de clase.

Ejemplo de información facilitada en un proceso de eliminación de eventos.
El número entre [...] indica cuántos eventos de Calendar han sido realmente eliminados (spoiler: debería ser siempre 1).

Y del mismo modo, se mostrará un informe final con el número de eventos eliminados y aquellos que, bien no se han encontrado en la tabla 📦 Registro eventos, bien si estaban en ella pero, por alguna razón, carecían de un evento real que eliminar en Google Calendar (¿tal vez porque ya los habías borrado tú de manera manual?).

Cuadro de diálogo con información de resumen del proceso de eliminación de eventos.

☝ Para que todo fluya como debe, deja que sea exclusivamente HaC quien se encargue  de generar o eliminar los eventos de tus clases en Google Calendar. Tampoco le toques un pelo a la información contenida en la tabla de registro de eventos, o todo puede irse un poquito al garete.

Registro de eventos

La hoja «📦 Registro eventos» es meramente informativa. Aquí se irán añadiendo todas y cada una de las sesiones de clase para las que se han generado eventos en Google Calendar con éxito.

Cuando HaC elimine eventos en Calendar, las sesiones de clase correspondientes desaparecerán también de esta hoja de registro, como cabe esperar.

Por tanto, esta tabla muestra una instantánea con información de todas las sesiones de clase de tus horarios semanales que disponen de eventos en Calendar.

Las sesiones se mostrarán en orden cronológico inverso (las más recientes más arriba), de modo que te resulte fácil apreciar de un vistazo la actividad más actual (como en FRC 😉).

Hoja de registro de eventos
Sí, en la sesión de la fila 18 no hay aula. Ya te dije hace un rato que para HaC esto no es un problema.

En la columna «J» verás la fecha y hora en la que se ha generado cada evento.

En las columnas «K» y «L» (esta última oculta por defecto) se guardan dos valores internos que atañen a Google Calendar y que HaC necesita para poder eliminar un evento cuando se lo pidas:

  • El ID de la serie de eventos que se ha generado para cada sesión de clase.
  • El ID del calendario en el que se ha creado el evento.

Tal vez te estés preguntando por qué he agrupado solo una de esas dos columnas. Mejor no te lo explico porque te puede entrar la risa (cosas de mi TOC, otra vez). Pero tú no les hagas ni caso a ninguna de las dos.

También dispones, en la parte superior de la hoja, de un puñado de convenientes controles de filtro para poder localizar rápidamente las sesiones que desees consultar, así como un recuento del nº total de sesiones visibles en cada momento (sí, solo se contabilizan las que el conjunto de filtros activos muestra en cada momento).

Lo cierto es que un informe construido con el artista anteriormente conocido como Data Studio hubiera quedado más aparente, pero la verdad es que para aplicar tres filtros (literalmente) sobre una tabla única tan simplona seguramente era matar moscas a cañonazos.

Ya te lo he dicho una vez, pero te lo repito, y ahora en rojo y con sirena, por si no había quedado lo suficientemente claro (haz ruidos a alto volumen con la boca imitando su sonido mientras lees el siguiente párrafo para que se te quede grabado, aprendizaje multimodal lo llaman, creo 😛):

🚨 No modifiques la información contenida en esta tabla a menos que tengas muy muy, muy claro qué estas haciendo. Y si no sabes a qué me refiero, entonces es que no lo tienes, así que mira, pero mejor no toques.

📝 Nota: Hubiera protegido las celdas de esta tabla para evitarte ediciones accidentales, pero el mecanismo de protección que nos ofrecen las hojas de cálculo de Google se lleva mal con los controles de filtro (y también la agrupación de filas y columnas). Sí, una  circunstancia un tanto incomprensible para mí (por no decir otra cosa más desagradable).

Comentarios finales y detalles técnicos

Gracias por acompañarme hasta aquí, realmente has tenido mucha paciencia conmigo. Y esto no pretende ser falsa modestia ni nada que se le parezca, soy consciente de que en lugar de una guía de uso me ha salido un ladrillo, qué le vamos a hacer.

Al concluir un artículo tan extenso como este siempre me parece oportuno hacer balance.

Creo que HaC aporta algunas ideas frescas a la hora de enfrentarnos al problema que pretendíamos resolver:

  • HaC está diseñado para facilitar la adopción de una estrategia que resuelve el problema de recoger y comunicar los horarios de las clases (docentes y aulas) por medio de Calendar, una herramienta de uso ubicuo en cualquier organización que utilice Google Workspace.
  • HaC es capaz de extraer una lista de clases a partir de un horario semanal en formato de tabla con días (columnas) y franjas horarias (filas). Además, puede agrupar las sesiones de clase que se repiten a la misma hora en distintos días de la semana por sí mismo.
  • HaC permite gestionar múltiples horarios semanales en una misma hoja de cálculo, por ejemplo los de todo un curso escolar.
  • HaC incorpora un "motor" de generación de eventos periódicos en Calendar que permite su modificación sin que se generen duplicados ni se produzcan conflictos en la reserva de espacios.
  • HaC sido diseñada para proporcionar una experiencia de uso segura y agradable. Para ello, facilita abundante información contextual de uso y explota las características de formato condicional, validación de datos, agrupación y protección de celdas, así como las recientemente introducidas funciones con nombre de las hojas de cálculo de Google. Además, incorpora un diseño que pretende ser limpio, claro y tal vez incluso elegante.

Pero no todo es miel sobre hojuelas. Aunque HaC me permite para trasladar mis clases a Calendar con mucho menos esfuerzo, no está exento de ciertas limitaciones en su estado actual:

  • HaC tan solo permite reservar un espacio para cada sesión de clase. En algunas situaciones podría resultar conveniente efectuar la reserva de varios, por ejemplo cuando se usan espacios contiguos divisibles.
  • HaC solo admite un instructor por sesión de clase, por lo que no es posible gestionar de un modo inmediato situaciones de co-docencia.
  • Las sesiones de clase que ya cuentan con eventos generados en Google Calendar pueden modificarse sin mayor problema, pero el cambio es global. Es decir, no es posible introducir modificaciones en un horario a partir de cierta fecha manteniendo al mismo tiempo en Calendar la configuración horaria anterior a ese momento a modo de histórico. Esto sí es en cambio posible cuando se interactúa de manera directa con Calendar a través de su interfaz de usuario. Cierto, podemos utilizar un par de hojas de horarios semanales, anterior y posterior a la fecha de corte, para superar esta limitación, aunque esta estratagema resulta indudablemente aparatosa.
  • HaC solo puede programar las clases con una periodicidad de tipo semanal, en tanto que con la interfaz de usuario de Google Calendar podemos generar series de eventos que se repiten siguiendo otros patrones (días, meses o años) e incluso establecer la alternancia de la repetición, de manera que se produzca cada cierto número de unidades de tiempo. Esta circunstancia complica mucho el diseño de horarios semanales que se salgan de lo habitual.
  • El uso de recursos de calendario para los espacios (aulas) tiene ciertas implicaciones relacionadas con el modo en que se han compartido. De manera predeterminada, cualquier usuario con permisos de acceso a uno de estos calendarios podrá realizar reservas sobre él. No obstante, existe un ajuste más granular que permite impedir que los usuarios que únicamente cuentan con permiso para ver la la información de libre / ocupado de los eventos puedan realizar reservas. Dependiendo de las circunstancias, el uso de este control puede resolver el problema o no.

Estas limitaciones abren un buen puñado de oportunidades para mejorar HaC, que podrían implementarse sin demasiadas complicaciones modificando el código Apps Script de la plantilla.

Si te lanzas a hacerlo, no te olvides de tener a mano unos cuantos litros de café ☕, musiquita inspiradora en flujo continuo 🎧 y cierto apaño para lograr un modo oscuro decente en el editor de Apps Script... todas cosas ricas que siempre ayudan.

Por esa razón te dejo ya mismo, que esto ya se ha hecho demasiado largo, y corro a terminar de preparar la documentación técnica, que encontrarás en el repositorio GitHub de HaC. En ella te contaré de manera pormenorizada su estructura, por qué razón se han tomado ciertas decisiones de diseño y sobre todo cómo funciona. Espero que esa información te resulte de utilidad para introducir los cambios que necesites.

Mascota de GitHub.
https://github.com/pfelipm/horarios-a-calendar

⏳ No, los enlaces a la documentación técnica no fallan. El repositorio permanecerá cerrado hasta que la tenga aseada y presentable, pero al menos puedes acceder ya mismo al código de HaC dirigiéndote al menú Extensiones  → Apps Script en la plantilla que te he facilitado. ¡Vuelve por aquí en unos días!

Entretanto, la caja de comentarios de aquí abajo es toda tuya, me encantará saber qué opinas de HaC, cómo vas a utilizarlo y cómo crees que podría mejorarse.


Comentarios