
Intégration API Google Calendar
Nous développons votre connecteur Google Calendar
Nous branchons l'API Google Calendar sur votre planning pour créer les événements, lire les disponibilités et récupérer les déplacements faits depuis le téléphone.
- Équipe produit senior
- sync d'agendas en production
- du cadrage au monitoring
À quoi sert l'API Google Calendar et pourquoi la connecter à son application ?
L'API Google Calendar permet à votre application de lire et d'écrire dans les agendas Google de vos utilisateurs ou de votre organisation. On l'intègre pour créer automatiquement un événement à la confirmation d'un rendez-vous, afficher les disponibilités dans un planificateur, ou déclencher une action métier quand un événement est modifié ou annulé. Le résultat concret : le planning métier vit dans l'agenda que les équipes ouvrent déjà, et les modifications faites depuis le téléphone sont immédiatement reflétées dans le logiciel sans ressaisie.
Ce que nos clients construisent sur l'API Google Calendar
Planning d'interventions dans l'agenda
Chaque mission devient un événement chez le technicien, avec adresse, contact et lien Meet. Plus de copier-coller de visio, plus de « je n'ai pas vu le rendez-vous ».
Créneaux proposés sur le vrai libre/occupé
Freebusy interroge plusieurs agendas avant d'afficher un créneau. Vous proposez ce qui est libre, au lieu de découvrir le conflit après coup.
Capacité lue dans l'agenda, pas dans un tableur
outOfOffice, focusTime et workingLocation deviennent des données de planning. Un cabinet ou un centre de formation arrête de tenir les absences à la main.
Rendez-vous commercial rattaché à l'affaire
Votre identifiant voyage dans extendedProperties. Si le créneau est déplacé ou annulé dans Google, le CRM le sait sans table de correspondance qui dérive.
Ce que ça change dans votre planning
La technique au service d'un résultat mesurable : un seul agenda, des créneaux vrais, plus de double saisie.
Fini la double saisie
Le logiciel métier écrit dans Google, et relit ce que le collaborateur a bougé depuis son téléphone. Les deux calendriers arrêtent de se contredire.
Des créneaux que l'on peut tenir
Vous ne proposez plus un horaire déjà pris. Moins de reports, moins de no-show nés d'un conflit invisible.
Meet sans bricolage
Le lien de visio est créé avec le rendez-vous. Plus de conférence réutilisée qui expose une réunion à la mauvaise personne.
Le planning reste à jour sans saturer Google
On écoute les changements au lieu de rescanner toutes les minutes. Le connecteur tient, y compris en délégation Workspace.
Comment nous livrons votre connecteur Google Calendar
Cadrage
Quels agendas, quel sens de sync, quels types d'événements, Meet ou pas, quel scope OAuth. On liste les récurrences et les fuseaux avant d'écrire une ligne.
Développement
syncToken par agenda, canaux push renouvelés avant échéance, quotaUser en délégation, clé métier en extendedProperties. Démonstration chaque semaine.
Recette
Déplacement mobile, 410 sur syncToken, canal expiré, récurrence à l'heure d'été, conferenceDataVersion oublié : chaque piège est rejoué avant la bascule.
Monitoring
Alerte sur 410, sur canal mort, sur 429. Journal des watches. Vous savez qu'un agenda est sourd avant le lundi matin des techniciens.
Ce que permet l'API Google Calendar
- Événements et types métier
- Création, lecture, patch. eventType (default, outOfOffice, focusTime, workingLocation, birthday) est immuable après insert. fromGmail n'est pas créable par API.
- Libre/occupé et listes d'agendas
- Freebusy sur plusieurs calendriers avant toute création. CalendarList et ACL pour savoir ce que l'utilisateur voit vraiment, pas ce que votre base suppose.
- Google Meet par API
- conferenceData.createRequest avec hangoutsMeet et un requestId client. La création est asynchrone (pending, success, failure). conferenceDataVersion=1 est obligatoire pour conserver la conférence.
- Sync incrémentale et push
- nextSyncToken sur la dernière page, puis syncToken. Push sur Events, CalendarList, ACL et Settings uniquement. La notification n'a pas de corps : il faut relire.
Le vocabulaire de l'API Google Calendar
- syncToken
- Jeton d'incrément, présent seulement sur la dernière page. On le rejoue à l'identique. S'il expire, Google répond 410 Gone : ce n'est pas une anomalie, c'est le signal de tout relire.
- X-Goog-Resource-State
- État porté par la notification (sync, exists, not_exists). exists couvre création, modification et suppression. Le numéro de message croît sans être séquentiel : on ne déduplique pas dessus.
- extendedProperties
- Emplacement prévu pour votre clé métier, private ou shared. C'est la seule façon propre de retrouver vos événements après un déplacement fait dans l'interface Google.
- conferenceDataVersion
- Paramètre à 1 sur insert, update et patch, sinon Meet n'est pas persisté. Le requestId de createRequest doit rester stable pour l'idempotence.
- quotaUser
- Paramètre ou en-tête x-goog-quota-user. Sans lui, un compte de service Workspace consomme le quota « par utilisateur » à lui seul et tombe en 429 sur des centaines d'agendas.
- eventType
- Type d'événement, immuable après création. default, birthday, focusTime, fromGmail, outOfOffice, workingLocation. Un client qui fige un enum exhaustif cassera au prochain type.
Les contraintes réelles de l'API Google Calendar
La notification ne dit pas ce qui a changé
Corps vide, Content-Length 0, état exists pour tout. Toute architecture qui attend un payload est fausse : il faut relire avec syncToken. Le handler se limite à valider le token de canal, enfiler, répondre 200.
Deux quotas, et un plafond quotidien
10 000 requêtes par minute par projet, 600 par minute par utilisateur. Seuil quotidien 1 000 000, non augmentable. La facturation du dépassement est annoncée pour plus tard en 2026, avec au moins 90 jours de préavis.
Aucun renouvellement automatique de canal
Il faut recréer le watch avec un id différent avant l'échéance, et accepter une période où deux canaux livrent le même signal. Google n'offre pas de signature HMAC : le token de canal est la défense.
Récurrences, fuseaux et filtres figés
end.timeZone IANA est obligatoire sur une récurrence. Un syncToken est incompatible avec un filtre qui bouge (timeMin, singleEvents). La sync complète à minuit est un anti-pattern : Google demande une heure tirée au hasard, plus ou moins 25 %.
API Google Calendar ou Microsoft Graph ?
Deux agendas de travail. Le bon dépend du parc déjà installé, pas d'une préférence technique.
| Critère | Google CalendarCette page | Microsoft OutlookGraph agenda et mail |
|---|---|---|
| Parc typique | Google Workspace | Microsoft 365, PME et ETI françaises |
| Périmètre | Agenda, pas le courrier | Agenda et courrier sur le même Graph |
| Notification | Push sans corps, relecture syncToken | Abonnement Graph, identifiant ou payload enrichi |
| Disponibilités | Freebusy | getSchedule et findMeetingTimes, salles incluses |
| Visio | Meet via conferenceData | Teams côté locataire, pas via cette fiche |
| Signature du webhook | Aucune HMAC, token de canal seulement | Validation d'abonnement Graph, puis relecture |
| Le bon cas | Vos équipes vivent dans Google Agenda | Vos équipes vivent dans Outlook |
Les deux se combinent sur un parc mixte. C'est un arbitrage de cadrage, pas un choix définitif. Calendly et Cal.com couvrent la prise de rendez-vous, pas l'agenda de travail.
Ce que nous mesurons sur une intégration Google Calendar
Les autres API d'agenda
Si vos équipes ne sont pas toutes dans Google, ces options se discutent au cadrage.
Google CalendarNous développons votre connecteur Google CalendarCette page
Microsoft OutlookAgenda et courrier via Microsoft Graph, souvent déjà dans le tenant.
CalendlyPrise de rendez-vous hébergée, pas un agenda de travail.
Cal.comMoteur de réservation open source, auto-hébergeable.On combine Google Calendar avec
La stack qui entoure Calendar sur nos projets.
Intégration Google Calendar : vos questions
Deux mécanismes, pas un. Le push (watch) vous prévient qu'il s'est passé quelque chose, sans dire quoi : la notification n'a pas de corps. La synchronisation incrémentale (syncToken) relit ensuite uniquement les changements, suppressions incluses. On persiste un jeton par agenda, on traite le 410 comme un chemin nominal (purge et resync complète), et on pose votre identifiant métier dans extendedProperties pour ne pas dépendre d'une table parallèle. Un scan complet à heure fixe est l'anti-pattern documenté par Google.
OAuth 2.0 (ou délégation de domaine Workspace), un connecteur qui crée et patche les événements avec conferenceDataVersion=1 si vous voulez Meet, Freebusy avant d'afficher un créneau, puis watch plus syncToken pour le retour. La partie sensible n'est pas l'insert, c'est le renouvellement des canaux, quotaUser en délégation, et les fuseaux IANA sur les récurrences. Nous cadrons le périmètre (quels agendas, quel sens, quels types) avant d'écrire le client HTTP.
Un premier flux utile, typiquement la création d'événements vers l'agenda du collaborateur avec clé métier, se livre en deux à trois semaines. Une sync bidirectionnelle avec push, gestion du 410, Meet et Freebusy demande plutôt six à huit semaines selon le nombre d'agendas et la complexité des récurrences. Nous cadrons le périmètre en amont et vous donnons une estimation ferme avant de commencer. C'est un arbitrage de cadrage, écrit avant le premier appel, pas une surprise de recette.
Non. Elles portent seulement des en-têtes (canal, état exists ou not_exists, numéro non séquentiel). exists veut dire « relis », pas « créé » ou « supprimé ». Sans worker de relecture sur syncToken, vous accumulez des signaux et aucune donnée. Il n'y a pas de HMAC : on vérifie le token de canal contre une table, on répond 200 tout de suite, et on déduplique sur le couple canal/ressource, pas sur le numéro de message.
On suit le parc, pas la préférence du développeur. Workspace : Calendar v3. Microsoft 365 : Graph (événements, calendarView, getSchedule). Un parc mixte se traite avec les deux connecteurs et une règle de priorité par collaborateur. Calendly et Cal.com ne remplacent pas cet agenda : ils portent la prise de rendez-vous, avec leurs propres règles de disponibilité. C'est un arbitrage de cadrage, écrit avant le premier appel, pas une surprise de recette.
Un projet d'intégration Google Calendar ?
Parlons-en. 30 minutes pour cadrer vos agendas, le sens de la sync et ce que l'API permet vraiment, puis vous dire franchement ce qui est faisable.
Parler de mon projet Calendar