, ,

Gagnez du temps : L’astuce pour un Google Agenda qui se colore tout seul

Vous en avez assez de votre Google Agenda qui ressemble à un bloc monochrome ? Vous passez du temps à colorer manuellement vos « Réunions » en bleu et vos « Deadlines » en rouge ? 🙋‍♂️

Et si je vous disais que vous pouviez automatiser tout ça ?

Aujourd’hui, je vous partage une de mes astuces préférées : un petit script Google Apps Script qui va scanner votre agenda et colorer automatiquement vos événements en fonction des mots-clés que vous avez définis. Préparez-vous à transformer votre agenda en un outil visuel ultra-efficace !

Pourquoi s’embêter à colorer ses événements ?

On est d’accord, la couleur, c’est joli. Mais ici, c’est surtout pratique !

  • Visibilité immédiate : D’un seul coup d’œil, vous pouvez évaluer votre journée. « Oh, beaucoup de rouge aujourd’hui, ça va être intense ! » ou « Super, une touche de jaune, c’est ma pause déjeuner. »
  • Gain de temps : Plus besoin de cliquer droit, de chercher la bonne couleur… Le script le fait pour vous, même lorsque vous créez des événements à la volée depuis votre téléphone.
  • Organisation : Cela vous force (gentiment) à être cohérent dans la nomination de vos événements, ce qui est une bonne pratique en soi.

Le guide pas-à-pas : Installez ce script en 5 minutes

Pas besoin d’être un développeur ! Google Apps Script est un outil intégré à Google Workspace qui permet de créer des petites automatisations. Suivez simplement ces étapes.

Étape 1 : Ouvrir l’éditeur de script

La façon la plus simple est de vous rendre directement sur script.google.com.

  1. Cliquez sur Nouveau projet en haut à gauche.
  2. Donnez-lui un nom mémorable, comme « Coloration Agenda ».

Étape 2 : Copier-coller le code

Effacez tout le contenu du fichier Code.gs et collez le code suivant à la place. C’est notre « recette magique » !

/**
 * @license MIT
 * Copyright (c) 2025 Fabrice Faucheux
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy
 * of this software and associated documentation files (the "Software"), to deal
 * in the Software without restriction, including without limitation the rights
 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 * copies of the Software, and to permit persons to whom the Software is
 * furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
 * SOFTWARE.
 */

/**
 * @OnlyCurrentDoc
 * Ce script change la couleur des événements Google Agenda en fonction de
 * mots-clés dans leur titre, en parcourant les 30 prochains jours.
 */

/**
 * Configuration des mots-clés et des couleurs associées.
 * Pour trouver les noms des couleurs, référez-vous à l'énumération
 * GoogleAppsScript.Calendar.EventColor (ex: CalendarApp.EventColor.BLUE).
 */
const COULEURS_PAR_MOT_CLE = {
  'Réunion': CalendarApp.EventColor.BLUE,
  'Projet': CalendarApp.EventColor.GREEN,
  'Déjeuner': CalendarApp.EventColor.YELLOW,
  'Appel': CalendarApp.EventColor.ORANGE,
  'Deadline': CalendarApp.EventColor.RED,
  'Important': CalendarApp.EventColor.RED
  // Ajoutez d'autres paires mot-clé/couleur ici
};

/**
 * Calcule une date future en ajoutant un nombre de jours à aujourd'hui.
 * Gère correctement les passages de mois et d'années.
 * @param {number} [jours=30] - Le nombre de jours à ajouter.
 * @returns {Date} La date future.
 */
const calculerDateFuture = (jours = 30) => {
  const date = new Date();
  date.setDate(date.getDate() + jours);
  return date;
};

/**
 * Traite un événement individuel pour déterminer et appliquer la couleur appropriée.
 * @param {GoogleAppsScript.Calendar.CalendarEvent} evenement - L'événement à traiter.
 */
const traiterEvenement = (evenement) => {
  try {
    const titre = evenement.getTitle();
    const couleurOriginale = evenement.getColor();
    const titreMin = titre.toLowerCase();

    // C'est plus déclaratif que la boucle for...in avec un 'break'.
    const motCleTrouve = Object.keys(COULEURS_PAR_MOT_CLE).find(motCle =>
      titreMin.includes(motCle.toLowerCase())
    );

    const nouvelleCouleur = motCleTrouve ? COULEURS_PAR_MOT_CLE[motCleTrouve] : null;

    // Appliquer la couleur seulement si une nouvelle couleur a été trouvée
    // et qu'elle est différente de l'actuelle (évite les écritures API inutiles).
    if (nouvelleCouleur && nouvelleCouleur !== couleurOriginale) {
      evenement.setColor(nouvelleCouleur);
      Logger.log(`Événement "${titre}" coloré (Mot-clé: "${motCleTrouve}").`);
    }

  } catch (erreur) {
    // Gestion d'une erreur spécifique à cet événement (ex: événement supprimé)
    // Le script continuera avec les autres événements.
    Logger.log(`ERREUR lors du traitement de l'événement ID ${evenement.getId()} ("${evenement.getTitle()}"): ${erreur.message}`);
  }
};

/**
 * Fonction principale qui récupère les événements des 30 prochains jours
 * et lance le processus de coloration.
 */
function colorerEvenements() {
  try {
    const calendrier = CalendarApp.getDefaultCalendar();
    if (!calendrier) {
      // Cas rare mais important si l'agenda par défaut n'est pas accessible
      throw new Error("Impossible d'accéder au calendrier par défaut.");
    }

    const maintenant = new Date();
    const dateFin = calculerDateFuture(30); // Utilisation de la fonction utilitaire

    Logger.log(`Recherche d'événements entre ${maintenant.toISOString()} et ${dateFin.toISOString()}...`);

    const evenements = calendrier.getEvents(maintenant, dateFin);

    if (evenements.length === 0) {
      Logger.log("Aucun événement trouvé dans la plage de dates spécifiée.");
      return; // Sortie anticipée si aucun événement
    }

    Logger.log(`${evenements.length} événement(s) trouvé(s). Début du traitement...`);

    // Utilisation d'une fonction fléchée ES6 pour le forEach
    // et appel de la fonction de traitement dédiée.
    evenements.forEach(traiterEvenement);

    Logger.log('Coloration des événements terminée.');

  } catch (erreur) {
    // Gestion globale des erreurs (ex: permission refusée, API Calendar indisponible)
    Logger.log(`ERREUR CRITIQUE dans colorerEvenements: ${erreur.message}`);
    Logger.log(`Stack: ${erreur.stack}`);
    // Optionnel : envoyer une notification par email en cas d'échec
    // MailApp.sendEmail('admin@example.com', 'Erreur Script Calendrier', erreur.stack);
  }
}

Étape 3 : Personnaliser vos mots-clés (Le plus important !)

Regardez en haut du script, dans la section COULEURS_PAR_MOT_CLE. C’est ici que vous définissez vos règles.

const COULEURS_PAR_MOT_CLE = {
  'Réunion': CalendarApp.EventColor.BLUE,
  'Projet': CalendarApp.EventColor.GREEN,
  'Déjeuner': CalendarApp.EventColor.YELLOW,
  // ...
};
  • Pour ajouter une règle : Copiez une ligne, par exemple 'Sport': CalendarApp.EventColor.CYAN,
  • Pour changer une couleur : Remplacez BLUE par une autre valeur. L’éditeur vous proposera les choix (comme RED, GREEN, YELLOW, ORANGE, CYAN, PURPLE, etc.) si vous tapez CalendarApp.EventColor.

N’oubliez pas d’enregistrer en cliquant sur l’icône en forme de disquette 💾.

Étape 4 : Exécuter le script et donner les autorisations

C’est la seule étape un peu « technique », mais ne vous inquiétez pas, c’est normal.

  1. Assurez-vous que la fonction colorerEvenements est bien sélectionnée dans la barre d’outils en haut.
  2. Cliquez sur le bouton Exécuter.

La première fois (et seulement la première fois), Google va vous demander la permission.

AVERTISSEMENT DE SÉCURITÉ

  1. Une fenêtre « Autorisation requise » va s’afficher. Cliquez sur Examiner les autorisations.
  2. Choisissez votre compte Google.
  3. Vous verrez un écran « Cette application n’a pas été validée par Google ». C’est normal, car c’est votre propre script !
  4. Cliquez sur Paramètres avancés (ou « Avancé »).
  5. Cliquez sur Accéder à [Nom de votre projet] (non sécurisé).
  6. Enfin, cliquez sur Autoriser pour permettre au script de lire et modifier votre propre agenda.

Une fois l’autorisation donnée, le script va s’exécuter. Allez voir votre Google Calendar… Magie ! Vos événements devraient être colorés.

Allez plus loin : Automatisez-le VRAIMENT !

C’est super, mais devoir cliquer sur « Exécuter » à chaque fois, ce n’est pas très… automatique. Nous allons donc mettre en place un déclencheur pour que ce script s’exécute tout seul, par exemple, tous les matins.

  1. Dans l’éditeur de script, cliquez sur l’icône Déclencheurs (une horloge ⏰) dans le menu de gauche.
  2. Cliquez sur le bouton Ajouter un déclencheur en bas à droite.
  3. Configurez-le comme suit :
    • Fonction à exécuter : colorerEvenements
    • Déploiement à exécuter : Principal
    • Sélectionner la source de l’événement : Basé sur l'heure
    • Sélectionner le type de déclencheur horaire : Minuteur journalier
    • Sélectionner l’heure : Minuit à 1h (ou l’heure qui vous convient le mieux).
  4. Cliquez sur Enregistrer.

Et voilà ! Désormais, chaque nuit, le script se lancera et colorera automatiquement tous les nouveaux événements des 30 prochains jours. Vous n’avez plus jamais à y penser.

C’est à vous de jouer !

Vous avez maintenant un Google Agenda intelligent qui s’organise visuellement pour vous. C’est un exemple simple de la puissance de Google Apps Script pour personnaliser votre suite Workspace.

Dites-moi dans les commentaires : Quels mots-clés et quelles couleurs allez-vous utiliser ? Avez-vous d’autres idées d’automatisation que vous aimeriez voir ?

Si vous avez des questions ou si vous bloquez à une étape, n’hésitez pas, la section commentaires est là pour ça !