Comment synchroniser automatiquement Google Agenda avec Google Sheets ?

Vous jonglez entre plusieurs événements et réunions dans votre emploi du temps ? Si vous utilisez Google Agenda pour planifier vos événements et Google Sheets pour les gérer, pourquoi ne pas les synchroniser ? Cette synchronisation vous permet de voir en un coup d’œil tous vos événements dans un tableau organisé. Grâce à Google Apps Script, vous pouvez automatiser cette synchronisation entre Google Agenda et Google Sheets dans les deux sens. Suivez ce guide pour découvrir comment mettre en place cette automatisation facilement !

Pourquoi synchroniser Google Agenda avec Google Sheets ?

Synchroniser Google Agenda avec Google Sheets présente de nombreux avantages :

  • Vue centralisée : Tous vos événements sont regroupés dans une feuille de calcul, facile à consulter et à analyser.
  • Mise à jour automatique : Vos événements sont toujours à jour dans Google Sheets, sans avoir à les saisir manuellement.
  • Partage simplifié : Partagez votre feuille avec votre équipe ou vos collaborateurs pour une meilleure coordination.
  • Analyse et reporting : Google Sheets permet d’appliquer des filtres, de créer des graphiques, et d’utiliser des formules pour analyser vos données d’événements.

Mise en place de la synchronisation avec Google Apps Script

Étape 1 : Créer un script dans Google Sheets

Pour démarrer, ouvrez une feuille de calcul Google Sheets et accédez à Extensions > Apps Script. Cela ouvre l’éditeur de script où vous pouvez ajouter le code suivant.

Étape 2 : Code du script de synchronisation bidirectionnelle

Voici le code qui permet de synchroniser Google Agenda et Google Sheets dans les deux sens. Ce script crée un menu personnalisé dans Google Sheets avec deux options : Importer les événements et Exporter vers Google Agenda.

// Fonction pour créer un menu personnalisé dans Google Sheets
function onOpen() {
  const ui = SpreadsheetApp.getUi();
  ui.createMenu('Synchronisation Agenda')
    .addItem('Importer les événements', 'importerEvenementsAgenda')
    .addItem('Exporter vers Google Agenda', 'exporterVersAgenda')
    .addToUi();
}

// Fonction pour synchroniser les événements d'Agenda vers Google Sheets
function importerEvenementsAgenda() {
  const idAgenda = 'votrecalendrier@gmail.com'; // Remplacez par l'ID de votre agenda
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const agenda = CalendarApp.getCalendarById(idAgenda);

  // Récupère les événements sur 7 jours à partir d'aujourd'hui
  const evenements = agenda.getEvents(new Date(), new Date(Date.now() + 7 * 24 * 60 * 60 * 1000));

  // Efface l'ancien contenu, sauf la première ligne (en-têtes)
  feuille.clear();
  feuille.appendRow(['ID', 'Titre', 'Date de début', 'Date de fin', 'Description']);

  // Ajoute les événements d'Agenda dans la feuille
  evenements.forEach(function (evenement) {
    feuille.appendRow([evenement.getId(), evenement.getTitle(), evenement.getStartTime(), evenement.getEndTime(), evenement.getDescription()]);
  });
}

// Fonction pour synchroniser les événements de Google Sheets vers Google Agenda
function exporterVersAgenda() {
  const idAgenda = 'votrecalendrier@gmail.com'; // Remplacez par l'ID de votre agenda
  const feuille = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const agenda = CalendarApp.getCalendarById(idAgenda);

  // Parcourt les lignes dans la feuille de calcul
  const derniereLigne = feuille.getLastRow();
  for (let i = 2; i <= derniereLigne; i++) {
    const idEvenement = feuille.getRange(i, 1).getValue(); // ID de l'événement
    const titre = feuille.getRange(i, 2).getValue(); // Titre
    const dateDebut = feuille.getRange(i, 3).getValue(); // Date de début
    const dateFin = feuille.getRange(i, 4).getValue(); // Date de fin
    const description = feuille.getRange(i, 5).getValue(); // Description

    let evenement;
    if (idEvenement) {
      // Si l'événement existe déjà, on le récupère et le met à jour
      evenement = agenda.getEventById(idEvenement);
      if (evenement) {
        evenement.setTytle(titre);
        evenement.setTyme(dateDebut, dateFin);
        evenement.setDescryption(description);
      }
    } else {
      // Si l'événement n'a pas d'ID, on le crée
      evenement = agenda.createEvent(titre, dateDebut, dateFin, {description: description});
      feuille.getRange(i, 1).setValue(evenement.getId()); // On stocke l'ID de l'événement dans la feuille
    }
  }
}

Étape 3 : Fonctionnalités du script

  1. Importer les événements : Cette fonction récupère les événements de Google Agenda sur une période de 7 jours et les ajoute à Google Sheets, en affichant les colonnes suivantes : ID, Titre, Date de début, Date de fin, et Description.
  2. Exporter vers Google Agenda : Cette fonction parcourt chaque ligne de Google Sheets et met à jour les événements existants dans Google Agenda ou en crée de nouveaux si nécessaire. L’ID de chaque événement est enregistré dans la feuille de calcul pour éviter les doublons.

Étape 4 : Planifier la synchronisation automatique

Vous pouvez configurer une synchronisation automatique en ajoutant un déclencheur basé sur le temps dans l’éditeur Apps Script. Par exemple, vous pouvez planifier une mise à jour quotidienne pour que votre feuille soit toujours à jour sans intervention manuelle.

Pour cela, accédez à Déclencheurs (icône en forme de réveil) et configurez un déclencheur pour exécuter la fonction importerEvenementsAgenda ou exporterVersAgenda selon votre besoin.

Résultat final

Lorsque vous exécutez ce script, un menu personnalisé apparaît dans Google Sheets avec deux options :

  • Importer les événements : Cette option synchronise les événements depuis Google Agenda vers Google Sheets.
  • Exporter vers Google Agenda : Cette option permet de mettre à jour les événements déjà présents dans Google Agenda depuis Google Sheets et d’ajouter les nouveaux événements.

Exemple d’utilisation

Voici à quoi pourrait ressembler votre feuille de calcul après avoir importé des événements :

IDTitreDate de débutDate de finDescription
abcd1234Réunion de projet2024-10-10 09:00:002024-10-10 10:00:00Réunion avec l’équipe
efgh5678Entretien client2024-10-12 14:00:002024-10-12 15:00:00Préparation du projet X
Exemple de synchronisation

Vous pouvez modifier ces événements directement dans Google Sheets et les exporter vers Google Agenda en un clic !

Avantages de cette synchronisation

  • Gain de temps : Plus besoin de saisir manuellement vos événements dans les deux systèmes.
  • Organisation améliorée : Une vue d’ensemble de tous vos événements dans une feuille de calcul bien structurée.
  • Collaboration : Partagez facilement la feuille avec vos collaborateurs pour une meilleure coordination.
  • Automatisation : Planifiez des synchronisations automatiques pour avoir toujours des informations à jour.

Avec ce script, vous avez maintenant la possibilité de synchroniser automatiquement Google Agenda avec Google Sheets dans les deux sens. Cette automatisation vous permet de gérer efficacement vos événements, de les partager et de les analyser en toute simplicité.

N’hésitez pas à tester cette solution et à partager vos retours ou questions dans les commentaires ! 👇