Retour au blog
MéthodeCas client

Comment synchroniser simplement vos agendas externes avec votre calendrier grâce à Google Apps Script ?

Je vais vous montrer en 15 minutes comment régler cet épineux problème de la désynchronisation entre vos agendas externes et votre calendrier principal.

Comme la plupart des formateurs, j'ai plusieurs agendas (un par école). Je suis abonné à ces différents flux pour avoir une vision claire de mon emploi du temps.

Et comme beaucoup d'indépendants, j'utilise un outil de prise de rendez-vous automatique pour limiter les allers-retours avec mes clients. On aime. 🫶

J'ai essayé Calendly, Zcal, Hubspot… et je suis resté avec Google Calendar et sa très discrète fonction de planification de rendez-vous incluse dans mon forfait Google Workspace.)

Seul problème : mes formations qui apparaissent dans mes différents agendas d'école ne bloquent pas mon calendrier principal. On peut donc réserver des créneaux alors que je ne suis pas disponible. Du coup, ça énerve tout le monde !

Regardez bien ces deux captures d'écran. Mon calendrier affiche bien tous mes cours provenant de mes agendas externes. Mais le système de réservation le voit comme libre puisque ces évènements ne font pas partie de mon agenda personnel.

Mais il est totalement ouvert à la réservation de rendez-vous ! (Regardez encore plus haut : je suis occupé toute la semaine.)

Que faire ?

Je me suis simplement tourné vers Gemini, l'IA de Google. Et je lui ai posé quelques questions. En 15 minutes, j'ai obtenu un bout de code fonctionnel qui a réglé mon problème de synchronisation d'agenda. Je vais vous montrer comment en vous montrant quelques extraits de notre échange. (Un peu à la manière de Pascal Picq dans L'IA, le philosophe et l'anthropologue (Odile Jacob, 2024).)

Pour alléger le texte, j'ai volontairement omis certains passages. Je les ai remplacés par des points de suspension "[…]".

Moi 🙋

Je suis formateur. J'interviens dans différentes écoles. Pour chacune, il existe un calendrier externe avec mes interventions. Je suis abonné à ces autres agendas via Google Calendar.

J'utilise la fonction "réservation" de Google Calendar pour permettre à mes autres clients de réserver des prestations de conseil ou de formation.

Evidemment, lorsque je suis en formation dans une école (par exemple ici l'EFREI), je ne suis pas disponible pour faire autre chose. Or, mes agendas d'école n'ont aujourd'hui aucune incidence sur la disponibilité de mon agenda personnel (antoine@kiplink.co). Ainsi, je peux avoir un client qui réserve un créneau alors que je n'étais pas disponible.

J'aimerais que les événements contenus dans les calendriers externes des autres écoles où j'interviens bloquent mon agenda comme s'ils émanaient directement de mon agenda.

Je pensais développer un simple patch Apps Script pour y arriver.

Qu'as-tu compris de ma demande ? Et comment vois-tu les choses ?

Gemini 🤖

J'ai bien compris ta demande. C'est un cas d'usage parfait pour Google Apps Script !

Ce que j'ai compris

  • Ta situation : Tu as un agenda Google principal pour tes clients et plusieurs autres agendas auxquels tu es abonné qui contiennent tes cours dans différentes écoles (EFREI, INSEEC, etc.).
  • Le problème : Les événements des agendas externes (abonnements) ne bloquent pas tes créneaux de disponibilité. Un client peut donc réserver une prestation via la fonction "planning de rendez-vous" alors que tu es en cours.
  • Ton objectif : Tu veux que les événements des calendriers des écoles soient automatiquement dupliqués sur ton agenda principal pour qu'ils te rendent "indisponible" et que ton système de réservation soit toujours à jour.

C'est bien ça ? Si oui, ma première analyse est que c'est tout à fait réalisable.

Comment je vois les choses (…)

Moi 🙋

Ça me semble bien. Mais est-ce qu'on ne peut pas faire encore plus simple et plus robuste ?

Gemini 🤖

Excellente remarque. Tu as raison, et c'est une très bonne façon de penser un projet de développement : viser la simplicité et la robustesse.

Oui, on peut faire beaucoup plus simple et robuste. J'ai une meilleure idée.

Au lieu de copier les événements, le script va simplement t'inviter à chaque événement des calendriers des écoles.

[…]

[Il est surexcité et commence à créer du code.]

Moi 🙋

C'est génial, j'adore ! Par contre, je doute que ce soit possible. Regarde bien.

Gemini 🤖

Tu as parfaitement raison de soulever ce point. C'est un détail crucial qui change la donne, et l'image que tu m'envoies le prouve.

Tu as mis le doigt sur un point essentiel

L'approche "s'inviter soi-même", bien que plus élégante, ne fonctionnera pas. Voici pourquoi :

[…]

Moi 🙋

Et si on créait seulement des événements "Absent du bureau" synchronisés plutôt que de copier les événements dans l'agenda ? (Ou bien ça ne sert à rien... je ne sais pas.)

Gemini 🤖

C'est une excellente idée et une approche très créative ! Analysons-la.

[…]

Tu perdrais toute l'information de l'événement original. Au lieu de voir "Workshop 1 Analyse et cadrage projet digital" dans ton agenda, tu verrais simplement "Absent du bureau". Tu ne saurais plus de quel cours il s'agit, ni dans quelle salle tu dois te rendre, sans retourner voir dans l'agenda de l'école. Ce serait moins pratique au quotidien.

[…]

La complexité du script reste la même dans les deux cas (il faut toujours gérer la synchro, les mises à jour, les suppressions). Donc, autant choisir la solution qui t'apporte le plus d'informations.

Je te recommande donc de rester sur la solution de la copie intelligente. Qu'en penses-tu ?

Moi 🙋

Restons sur la copie intelligente.

Avant de te fournir les IDs pour chaque calendrier. Voici toutes les infos pour celui de l'EFREI. De quoi as-tu besoin exactement ?

Paramètres de Google Agenda

[Gros copier-coller sans aucune mise en forme de la page des paramètres de Google Agenda]

Gemini 🤖

C'est parfait ! De tout ce que tu as listé, la seule information dont j'ai besoin est précisément celle-ci :

L'ID de l'agenda

[je-ne-vous-montrerai-évidemment-pas-l-identifiant-unique-vers-mon-agenda-privé]@import.calendar.google.com

[…]

Moi 🙋

Voici donc :

EFREI : [je-ne-vous-montrerai-évidemment-pas-l-identifiant-unique-vers-mon-agenda-privé]@import.calendar.google.com

INSEEC : […]

[…]

Gemini 🤖

[Code JavaScript]

Comment Installer le Script (en 5 minutes)

[Tutoriel]

Moi 🙋

Revenons au point 3. Voici le log d'erreur :

24 sept. 2025, 14:24:21DébogageCréation de l'événement : Workshop 1 Analyse et cadrage d'un projet digital24 sept. 2025, 14:24:21ErreurException: Not a guest for this event.

at createEvent(Code:111:12)

at processEvent(Code:92:5)

at unknown function

at syncAllCalendars(Code:58:19)

Gemini 🤖

Excellent ! Merci beaucoup pour ce retour précis. C'est exactement le genre d'information qui permet de corriger le tir.

Tu as trouvé un bug très subtil dans la logique de Google Apps Script, et le message d'erreur est très clair.

[…]

[Code JavaScript corrigé]

[Tutoriel]

Moi 🙋

Ça marche, merci ! Tous les événements des calendriers externes sélectionnés ont été synchronisés dans mon agenda. On ne peut plus réserver de rendez-vous sur ces plages horaires où je n'étais pas disponible.

Et voilà, en 15 minutes, ce problème était enfin réglé ! Il n'y a pas de recette magique, juste de la méthode :

  • Une vision claire du problème à régler.
  • Une connaissance de base des outils à disposition. J'ai par exemple sciemment décidé d'interroger Gemini 2.5 plutôt qu'un autre modèle puisque toutes mes questions traitaient de l'écosystème Google Workspace.
  • Une ouverture d'esprit pour challenger les réponses de l'IA.

Et voilà, le problème est réglé !

On en parle quand vous voulez, mon agenda est maintenant bien synchronisé. ;-)

À dispo,

Antoine


Comment transformer votre entreprise grâce à l'intelligence artificielle ?

L'IA promet d'augmenter nos capacités créatives et analytiques, mais ses limites sont souvent sous-estimées. Érable Studio accompagne les dirigeants dans leur transformation numérique : diagnostic 360°, identification des cas d'usage à fort impact, et construction d'outils sur-mesure calibrés sur la morphologie de votre entreprise.

✅ Un diagnostic lucide de vos processus et de vos frictions.

✅ Des cas d'usage concrets, ancrés dans votre réalité opérationnelle.

✅ Une approche pragmatique : pas d'IA washing, que des résultats mesurables.

Prochaine étapecontact@erable.io

Besoin d'accompagnement ?

Discutons de votre projet et de comment l'IA peut vous aider.

Diagnostic gratuit