Google Agenda et Sheets : synchroniser et mettre à jour des événements d’un agenda dans une feuille de calcul et vice-versa
La question de la gestion du temps est récurrente dans le suivi de tous les projets menés en même temps. En tant qu’indépendant, je dois gérer une dizaine de projets simultanément, dont certains sont facturés […]

Ce que vous allez découvrir
- Script pour récupérer les événements de Google Agenda vers Sheets
- Script pour mettre à jour l'événement de Google Sheets vers Agenda
- Conclusion
Google Agenda et Sheets : synchroniser et mettre à jour des événements d’un agenda dans une feuille de calcul et vice-versa
La question de la gestion du temps est récurrente dans le suivi de tous les projets menés en même temps. En tant qu’indépendant, je dois gérer une dizaine de projets simultanément, dont certains sont facturés au temps passé, et les clients me demandent un suivi circonstancié des heures passées. Voyons ensemble la méthode de synchronisation.
Comment suivre le temps passé sur un projet ? Faut-il saisir les événements dans Sheets (je saisis dans une feuille de calcul le numéro du projet, une date et heure de début et de fin… pff, galère et comment être sûr de ne pas oublier des événements) ? Ou bien faut-il saisir naturellement les événements dans mon agenda Google et ensuite les recopier dans une feuille de calcul (je récupère facilement le temps passé réel mais c’est compliqué d’associer l’événement à un projet précisément en suivant une règle de nommage stricte et facile à oublier).
Quel dilemme !
Voici une proposition de compromis exploitant les forces de chaque application :
Google Agenda pour saisir, modifier, supprimer les événements dans le calendrier Google, créer des rappels, gérer les invitations et les visio-conférences sur Meet.
Google Sheets pour recueillir les événements, calculer le temps passé, associer l’événement à un projet et créer des rapports personnalisés à mes clients.
J’ai donc créé deux scripts d’interactions entre l’appli Agenda et Sheets que je vous
Veuillez créer un compte pour lire la suite de cette ressource
L’accès à cette ressource se fait gratuitement en créant un compte Numerifan. Les abonnements payants donnent également accès aux cours gratuits.

Cet article est réservé aux abonnés. Pourquoi ?
Fournir tout ce contenu nous demande beaucoup de temps, des ressources et une veille permanente. Accédez à ce contenu en rejoignant notre super communauté, pour tous nous remercier 💪
Besoin d'un peu plus d'aide sur Sheets ?
Des formateurs sont disponibles toute l'année pour vous accompagner et optimiser votre utilisation de Sheets, que ce soit pour votre entreprise ou pour vos besoins personnels !
Découvrir nos formations Sheets- Tutos connexes
- Plus de l'auteur
5
Note du cours
(2)
(0)
(0)
(0)
(0)
« synchroniser et mettre à jour des événements d’un agenda »
Il me semble qu’on ne peut pas choisir un agenda mais que tous les événement dû compte son récupéré quelque soit le calendrier.
Une solution ?
Cet avis vous a été utile ?
Bonjour Dreadaxe,
Ce script récupère les événements de l’agenda par défaut de ton compte avec CalendarApp.getDefaultCalendar();
si tu souhaites récupérer un autre agenda il faut utiliser CalendarApp.getCalendarById(« IDAGENDA »);
Bonne journée 🙂
Cet avis vous a été utile ?
MERCI !!
Note intéressante, filtrer semble faire foirer le script.
Cet avis vous a été utile ?
Merdouille ça ne semble pas fonctionner
CalendarApp.getCalendarById(« IDAGENDA »);
« IDAGENDA » = n9iknbdch76l16cd2pt3je29po@group.calendar.google.com
Dommage aussi qu’on ne puisse pas récup l’agenda de contact avec les dates de naissance.
Cet avis vous a été utile ?
Meme probleme avec IDAGENDA, je n’arrive pas a faire fonctionner une solution ?
Cet avis vous a été utile ?
Bonjour Body et Dreadaxe :
La bonne formulation serait :
const IDAGENDA = « n9iknbdch76l16cd2pt3je29po@group.calendar.google.com » ;
const calendar = calendarApp.getCalendarById(IDAGENDA);
Cet avis vous a été utile ?
Bonjour,
J’ai ce message d’erreur lorsque j’ai coller votre code
« 12:03:31 Erreur
TypeError: Cannot read property ‘getRange’ of null
listEvents @حسن الحسن تمياس Code.gs:33 »
Pouvez-vous m’aider à ce sujet ?
Cet avis vous a été utile ?
bonjour.
Vérifiez bien avoir nommé une feuille « TEMPS PASSE » (vérifiez bien l’écriture)
Cet avis vous a été utile ?
pour information, dans le texte de l’article il est écrit de créer un onglet « TEMPS PASSÉ » avec l’accent
J’ai eu le même problème avant de relire le script avec précision
je vous remercie
Cet avis vous a été utile ?
Bonjour et merci pour l’info, j’ai corrigé le texte pour enlever le « E » avec accent et éviter d’enduire d’erreur 🙂
Cet avis vous a été utile ?
excellent
merci pour toutes ces leçons
Cet avis vous a été utile ?
Merci Edouard 🙂
Cet avis vous a été utile ?
Bonjour,
dateDebut et dateFin sont mal implémentées.
Cet avis vous a été utile ?
Bonjour David, qu’est ce qui pose problème dans l’implémentation des DateDébut et DateFin ?
Cet avis vous a été utile ?
bonjour, j’ai le message :
22:38:16 Erreur
TypeError: Cannot read property ‘getEvents’ of null
listEvents @حسن الحسن تمياس Code.gs:16
pouvez vous m’aider? merci
Cet avis vous a été utile ?
Bonjour Erwan, le message indique que ligne 16, getEvents() est appliqué sur un objet « null » c’est à dire qui n’existe pas,
Il s’agit de l’objet « calendar » qui est défini un peu plus haut par
const agenda = CalendarApp.getDefaultCalendar();
Avez-vous bien validé les autorisations pour utiliser le service CalendarApp ?
Avec vous modifié la définition de « calendar » ?
Cet avis vous a été utile ?
Merci – je vais essayer de revoir ca ce week end.
Cet avis vous a été utile ?
bonjour, merci du retour, le premier script fonctionne très bien
par contre comment tester le 2eme, a chaque fois l’évènement s’efface ! peut être parce que je n’ai rien mis colonne 1 ! , comment créer un ID EVENEMENT ?
sinon, si je souhaite utiliser un agenda particulier vous écriver : si tu souhaites récupérer un autre agenda il faut utiliser CalendarApp.getCalendarById(« IDAGENDA »)
il faut juste remplacer « IDAGENDA » par l’adresse id de mon agenda ?
Est il possible sur un google sheets de 3 feuilles de mettre 3 agendas différents avec 3 scripts différents?
pour cela je dois :
faire attention au nom de chaque feuille (ici temps passe) ligne 14 et 67
changer l’id de l’agenda comme vu au dessus, ligne 16 et 90
Merci encore
Erwan
Cet avis vous a été utile ?
Erwan, voici quelques réponses:
« sinon, si je souhaite utiliser un agenda particulier vous écriver : si tu souhaites récupérer un autre agenda il faut utiliser CalendarApp.getCalendarById(« IDAGENDA »)
il faut juste remplacer « IDAGENDA » par l’adresse id de mon agenda ? »
L’Id de l’agenda est récupérable dans les paramètres de l’agenda. https://sites.google.com/site/efficalendar/synchronisation/ou-trouver-l-identifiant-de-l-agenda-google-calendar
« Est il possible sur un google sheets de 3 feuilles de mettre 3 agendas différents avec 3 scripts différents?
pour cela je dois :
faire attention au nom de chaque feuille (ici temps passe) ligne 14 et 67
changer l’id de l’agenda comme vu au dessus, ligne 16 et 90 »
Il faudrait étudier le cas plus précisément, mais oui, l’idée de base est de créer 3 fonctions différentes (avec des noms différents pour chacune !) dans chacune, indiquer le nom d’une feuille et l’id de l’agenda. L’idéal est de passer les infos qui changent dans les arguments d’une seule fonction.
Je t’invite à te rapprocher de Numericoach pour demander une heure d’accompagnement à distance pour avancer dans ton projet contact@numericoach.fr
Cet avis vous a été utile ?
j’ai réussi a faire le changement de calendrier notamment avec votre réponse à body;
Maintenant j’ai :
ReferenceError: agenda is not defined
listEvents @حسن الحسن تمياس Code.gs:27
une idée ?
Cet avis vous a été utile ?
agenda n’est pas défini…
donc vérifie si il y a bien avant la fameuse ligne 27 une ligne avec « const agenda=CalendarApp.getCalendarById(…)
Cet avis vous a été utile ?
Erwan, voici quelques réponses:
« sinon, si je souhaite utiliser un agenda particulier vous écriver : si tu souhaites récupérer un autre agenda il faut utiliser CalendarApp.getCalendarById(« IDAGENDA »)
il faut juste remplacer « IDAGENDA » par l’adresse id de mon agenda ? »
L’Id de l’agenda est récupérable dans les paramètres de l’agenda. https://sites.google.com/site/efficalendar/synchronisation/ou-trouver-l-identifiant-de-l-agenda-google-calendar
« Est il possible sur un google sheets de 3 feuilles de mettre 3 agendas différents avec 3 scripts différents?
pour cela je dois :
faire attention au nom de chaque feuille (ici temps passe) ligne 14 et 67
changer l’id de l’agenda comme vu au dessus, ligne 16 et 90 »
Il faudrait étudier le cas plus précisément, mais oui, l’idée de base est de créer 3 fonctions différentes (avec des noms différents pour chacune !) dans chacune, indiquer le nom d’une feuille et l’id de l’agenda. L’idéal est de passer les infos qui changent dans les arguments d’une seule fonction.
Je t’invite à te rapprocher de Numericoach pour demander une heure d’accompagnement à distance pour avancer dans ton projet 🙂 contact@numericoach.fr
Cet avis vous a été utile ?
merci pour votre aide!
Cet avis vous a été utile ?
Très intéressant tout ca ! est ce possible de récupérer les adresses des RDV ainsi que le descriptif du rendez vous ? j’aimerai en détourner l’usage pour gérer des bons de livraison. merci
Cet avis vous a été utile ?
Merci GrBcl (un accident de scrabble ? 🙂 )
Toutes les informations du rendez-vous sont récupérables (sauf le lien meet, il faut passer alors par CalendarApi.
Bonne continuation !
Cet avis vous a été utile ?
Bonjour ! J’utilise votre script depuis déjà un bon moment pour créer des bons de livraison avec des références que souvent je colle dans la description du google agenda et que je récupère dans GSheet. Ce qui me rend un grand service !
Le problème c’est que dans GSheet, le contenu télécharger insère toutes les balises html etc… ce qui rend difficilement lisible le contenu de la cellule.
Il y a t’il possibilité dans le script de supprimer la mise en forme de la description de google agenda ?? sans avoir a chaque fois a cliquer sur le bouton de suppression de la mise en forme (icone T barré) ou bien de simplement recevoir en format texte brut les donnée dans gsheet?
merci d’avance !
Cet avis vous a été utile ?
Bonjour GrBCL;
Pouvez-vous me donner un exemple de texte avec les balises HTML?
Cet avis vous a été utile ?
0325327***livrer grundig congélateur gfn13740nroute de sainte marthe
voici ce que je reçois dans GSheet si en amont je n’ai pas sélectionné le texte de la description dans google agenda et cliqué sur la suppression de la mise en forme (icone T barré)
Merci pour votre avis 🙂
Cet avis vous a été utile ?
<html-blob<0323527820<br<grundig congélateur gfn13740n<br/html-blob<
j'ai volontairement inversé les signes des balises car cela ne s'affiché pas dans mon commentaire de 22h21 🙂
Cet avis vous a été utile ?
Merci, mais je ne vois pas la mise en forme. Je vais faire des tests et revenir vers vous.
Cet avis vous a été utile ?
pour contrer le problème j’ai appliqué ce code à la suite de votre script :
var sheet = SpreadsheetApp.getActiveSpreadsheet ();
var textFinder = sheet.createTextFinder (‘<br<');
textFinder.replaceAllWith (' ')
ça règle mon problème, cependant j'aimerai tout de même savoir pourquoi la mise en forme html se télécharge….
Cet avis vous a été utile ?
Bonjour Antoine,
Merci pour toutes ces fonctionnalités très intéressantes.
J’ai deux questions pour vous :
– Est il possible de générer une modification automatique du google Cal via GSheet? Admettons que nous mettons une date de début d’évènement dans le google sheet qui se reporte sur google Cal et que finalement nous le changeons sur GSheet, est ce qu’il existe un moyen que le changement opère également sur Google Cal ?
– Pensez vous qu’il soit possible de rajouter une description dans l’évènement créé de base ? Nous savons aujourd’hui mettre un Titre, une date/heure de début et une date/heure de fin, mais est ce qu’on a le moyen d’ajouter une description?
Merci pour vos brillantes lumières.
Cet avis vous a été utile ?
Pour compléter ma demande, je parle bien d’y ajouter une description à la base, non pas par la suite (chose que fait votre script cité plus haut si je ne m’abuse)
Cet avis vous a été utile ?
bonjour Vincent,
La mise à jour de l’événement à partir des modifications apportées dans Sheets est tout à fait possible, d’ailleurs dans le script onEditDeclencheur() le titre est modifié dans Agenda quand une colonne est modifiée dans Sheets. il est possible de demander aussi à modifier les dates.
Pour la description auto,au même titre que vous créez le titre avec setTitle(), vous pouvez créer une description avec setDescription().
N’hésitez aps à nous contacter pour un accompagnement plus personnalisé pour répondre à vos besoins spécifiques 😉 contact@numericach.fr
Cet avis vous a été utile ?
MErci beaucoup pour ce script qui fonctionne !
Cet avis vous a été utile ?
Bonjour, il existe ce plugin que j’ai installé, qui fonctionne il me semble sur la meme idée. mais comment faire pour que l’agenda se mette à jour automatiquement ?
https://workspace.google.com/marketplace/app/sheets2gcal/137564231775?hl=fr
Cet avis vous a été utile ?