Retomo el blog para hablaros de un tema que me trae de cabeza desde hace años. Sacad las palomitas 🍿 que os voy a contar una historia apasionante 🤪
‼️ Si os queréis saltar toda la introducción e ir directamente donde hablo del Asistente de Contactos v3 avanzad hasta aquí (aunque si os soy sincero me gustaría que no lo hiciéseis ☺️) |
Cuando hice la transición en nuestro centro de nuestro dominio propio a g.educaand.es en abril de 2021, una de las opciones que más eché en falta fue la del AUTOCOMPLETADO DE CONTACTOS (al redactar un email, compartir archivos y carpetas en Drive, eventos en Calendar, etc.)
Fue por ello por lo que me puse en contacto con @pacosilve y en poco tiempo nos llegó la respuesta de la propia Google:
Un único dominio puede tener un máximo de 100 directorios
Un directorio es lo que permite a los miembros de mi centro (mi directorio) conocer a sus otros miembros pero NO al resto de la Organización. Y mucho me temo que en Andalucía somos unos cuantos más de 100… 😅
Ante esto, la única opción que quedaba para obtener el famoso autocompletado era subir los contactos a Google Contacts, así que me propuse investigarlo.
Así es cómo lo hice 🧐
Primeramente estudié si había opción de tener todo sincronizado. O sea, que si había forma de que yo particularmente mantuviese actualizados los contactos y de paso los de todo mi claustro de manera que ellos no tuviesen que preocuparse.
Mi gozo en un pozo. No hay forma. Los contactos son PERSONALES y como tales, cada cual se tiene que encargar de los suyos propios ☝🏻
No obstante, no me desanimé y como vi que la manera más rápida de subir datos a Contacts era importando un archivo CSV, fabriqué una hoja de cálculo que convertía los datos de Séneca directamente en un CSV compatible con Contacts en un par de clics.
Este es el enlace a esta primera versión del Asistente de Contactos ⚡. Podríamos llamarlo v1:

Esta opción me consta que está siendo utilizada por muchísima gente. Incluso hay coordinadores que preparan los CSV para compartirlos con sus compañeros y que siempre los tengan actualizados. Pero esta opción tiene un gran PERO:
No permite actualizar contactos y, si subimos un nuevo CSV, los contactos que ya hubiera los duplica 😵💫
Al final son muy pocas las personas que tienen paciencia por mantener el sistema a punto ya que puede haber muchas variaciones a lo largo del curso (sobre todo en centros grandes).
No me convencía. De ahí que buscase una v2 del asistente de Contactos.
En septiembre del 2022 me encontraba en ese punto en el que yo, que llevaba tiempo escuchando hablar de Google AppsScript (GAS) y todo lo que se podía hacer con él (sobre todo de la mano de mi mentor, @pfelip), me embarqué en el intento de realizar un proyecto de AppsScript que me permitiese utilizar una Hoja de Cálculo (HdC) para sincronizar con Contacts.
Tras muchas pruebas mi primer proyecto funcionó, sí, pero de aquella manera. Solo era capaz de sincronizar Nombre, Apellidos, Email, Grupo-Organización y 1 etiqueta. Pare usted de contar. Este fue mi primer código:
function crearContacto() {
var libro = SpreadsheetApp.getActiveSpreadsheet();
var hoja = libro.getSheetByName("Contactos2");
var contactos = hoja.getRange(2, 1, hoja.getLastRow() - 1, hoja.getLastColumn()).getValues();
var misContactos = ContactsApp.getContactGroup("System Group: My Contacts")
contactos.forEach(fila => {
var email = fila[2]
var nombre = fila[1]
var apellidos = fila[0]
var grupo = fila[3]
var etiqueta = fila[4]
var contacto = ContactsApp.createContact(nombre, apellidos, email)
contacto.addCompany(grupo, etiqueta)
misContactos.addContact(contacto)
})
}
Para el que sepa de AppsScript puede resultarle chistoso (ahora a mí también me lo parece), pero un año antes no entraba en mi imaginación producir eso y que funcionase.
No obstante, me enfrentaba a otro problema: los contactos se duplicaban cada vez que ejecutaba la función. Y las etiquetas también (nuevamente 😵💫)
Desesperado, busqué la inestimable ayuda de Pablo Felip. Y no solo acudió para echarme un cable, sino que me reescribió todo el código para que hiciese todo lo que yo pretendía que hiciera 🙌🏻
De ahí nació esta v2 del Autocompletado de Contactos:

Sincronizaba pulsando en un botón los contactos que se hubiesen incluido en la hoja incluyendo Apellidos y Nombre, correo, 1 etiqueta y en Notas se podía poner cualquier otra información (como la especialidad). Además, evitaba duplicar los contactos que ya hubiésemos subido y las etiquetas que ya estuviesen creadas.
Sin embargo, mucha gente me comentó que poder asignar una etiqueta nada más se le hacía insuficiente 🥲 y, por otro lado, el código se quedó obsoleto rápidamente, puesto que utilizaba funciones antiguas que estaban siendo reemplazadas por las de la API de Google People. De hecho, había cosas que un año más tarde ya no funcionaban 😒
Además, había otro PERO que le encontré a la HdC que no me tenía conforme: no permitía ACTUALIZAR 🔄 los contactos si, por ejemplo, se producía un cambio de etiqueta.
Así que me propuse a largo plazo realizar otra nueva versión del Asistente de Contactos. Mucho mejor y mucho más funcional.
Pero no tuve ni idea de cómo hacerlo… hasta 3 meses más tarde. ¿Qué fue lo que cambió en mí en diciembre del 2022? En mí no cambió nada, pero llegó a nuestras vidas, como un tsunami, la IA, y más concretamente, ChatGPT 🤖
Ya lo he mencionado en Twitter X algunas veces, al igual que muchos otros expertos en el tema, personalmente considero que la IA ha supuesto un avance igual de disruptivo que la propia llegada de Internet. Otra cosa es que la mayoría de las personas todavía no lo perciban. Saben que existe porque lo escuchan en los telediarios, pero no la utilizan. No obstante dejo este tema para otro día, que me voy por las ramas.
El caso es que a lo largo del 2023 he ido investigando cada vez más sobre las posibilidades que nos iba ofreciendo no solo ChatGPT, sino también Bing Chat Copilot de Microsoft y Bard Gemini de Google (se ve que salvo los de OpenAI, el resto no tienen muy claro qué nombre ponerle a su IA). Con todo ello, fue madurando en mi cabeza la idea de mi nuevo Asistente de Contactos v3.
A mediados de noviembre del 2023 empecé a hablar del tema con @franrosalestova. Él, como yo, estaba empezando a realizar sus primeros pinitos con AppsScripts y nos consultábamos mutuamente sobre nuestros proyectos. Así que con su ayuda, la de ChatGPT y Copilot fui montando la nueva versión.
Ha sido un proceso muy lento, de casi 3 meses 1 año 🗓️, en los que hemos ido dando pasos y, tras cada prueba, se nos ocurría una nueva funcionalidad que incluir. Del código original no queda absolutamente nada. Se ha hecho todo el proyecto nuevo al completo y es muchísimo más extenso y complejo.
No voy a entrar en detalles, pero os resumo lo que se puede hacer con esta última versión del Asistente de Contactos v3.4 (agosto 2024):

-
- Sincroniza contactos (exportados directamente desde Séneca si se quiere), personalizando hasta 4 etiquetas. Todos los datos salvo el Nombre y el Correo son opcionales (hoja ⬆️ Datos):
- Apellidos, Nombre (o Nombre solamente)
- Correo electrónico
- Teléfono
- Organización / Departamento (yo pongo la especialidad del docente)
- Etiqueta 1 / Grupo (Claustro, PAS, Alumno-curso, etc.)
- Etiqueta 2 (se pueden poner los Departamentos o Ciclos)
- Etiqueta 3 (se pueden poner cargos)
- Etiqueta 4 (por si se necesita)
- Sincroniza contactos cada 24 horas de manera desatendida. Simplemente introducimos los cambios en la HdC y cada noche se efectúan los cambios sin que tengamos que hacer nada más.
- Posibilita ACTUALIZAR los datos directamente desde la HdC y que dichos cambios se reflejen inmediatamente en Contacts.
- Gestiona, actualiza y elimina los Contactos de Google Contacts directamente trayéndolos a la HdC con la pestaña 👥 Mis Contactos:
- Elimina las Etiquetas que no tengan contactos asignados automáticamente.
- Soporta Múltiples Usuarios. La HdC está diseñada para ser utilizada por varios usuarios distintos.
- Los usuarios pueden fácilmente hacer copias de la HdC para personalizarlas según sus necesidades específicas.
- Sincroniza contactos (exportados directamente desde Séneca si se quiere), personalizando hasta 4 etiquetas. Todos los datos salvo el Nombre y el Correo son opcionales (hoja ⬆️ Datos):
Os enlazo aquí el videotutorial donde explico el funcionamiento básico de la HdC:
Además, he incluido una característica que es mucho más importante (y de la que estoy bastante orgulloso 😎):
-
- Posibilidad de Gestionar los contactos del centro por medio de un único Administrador y que los cambios se les actualicen al resto del claustro de manera desatendida. Esta es la opción a la que más vueltas le he dado puesto que casi convierte al sistema en algo muy similar a lo que teníamos con nuestro Dominio propio y los famosos Directorios. Algo con lo que el personal “se olvida” de tener que estar actualizando sus contactos a mano continuamente.
- Opción de que cada usuario elija los grupos de contactos que quiere sincronizar.
- El sistema DESACTIVA la sincronización de contactos a un usuario cuando éste deja de pertenecer al grupo del profesorado. Además, le notifica con un email de este hecho.
- Posibilidad de Gestionar los contactos del centro por medio de un único Administrador y que los cambios se les actualicen al resto del claustro de manera desatendida. Esta es la opción a la que más vueltas le he dado puesto que casi convierte al sistema en algo muy similar a lo que teníamos con nuestro Dominio propio y los famosos Directorios. Algo con lo que el personal “se olvida” de tener que estar actualizando sus contactos a mano continuamente.
Y aquí tenéis el videotutorial donde explico cómo configurar el sistema para que pueda funcionar tal y como os he comentado:
Aunque casi todo el código lo he ido creando yo (con ayuda de la IA), sin la colaboración de @franrosalestova no habría podido llevarlo a término, puesto han sido suyas muchísimas de las propuestas que han ido incluyéndose en la HdC. Además su feedback continuo me ha servido para ir depurándola a cada paso que daba. ¡Mil gracias, compañero! 🙌🏻
Y bueno… Esto ha sido todo. Creo que no me he dejado nada en el tintero. Por supuesto, esta última versión (que seguramente no será la última) puede tener multitud de errores y ser susceptible de mejora. Así que si alguien se anima a probarla y me quiere dar feedback, le estaré eternamente agradecido! 😉
Podéis escribirme en los comentarios de este mismo post o por Telegram a @maestroseb
¡Hasta la próxima!