Votre Google Agenda ressemble à un arc-en-ciel… mais sans aucune logique ? 😅 Vous passez votre temps à colorer manuellement vos rendez-vous pour savoir d’un seul coup d’œil ce qui est important (« Client »), ce qui est interne (« Réunion d’équipe ») ou ce qui est urgent (« Manager »).
Et si je vous disais que vous pouviez automatiser tout ça ?
Grâce à la puissance cachée de Google Workspace, Google Apps Script, nous allons créer un petit robot personnel qui lira votre agenda et colorera vos événements pour vous, en fonction des participants.
Prêt à reprendre le contrôle de votre agenda ? Suivez le guide !
Pourquoi automatiser les couleurs de votre agenda ?
Trois raisons très simples :
- Identification visuelle immédiate : D’un seul regard, vous savez si un événement est une réunion avec un client important (Orange), un point avec votre manager (Rouge) ou une session de support (Gris).
- Gain de temps (précieux) : Fini le clic-droit > « Changer de couleur » à répétition. Vous créez l’événement, le script s’occupe du reste.
- Zéro effort, zéro oubli : L’automatisation garantit que tous vos événements sont classés correctement, même ceux que vous avez acceptés à la va-vite depuis votre téléphone.
Qu’est-ce que Google Apps Script ?
N’ayez pas peur du mot « Script » ! Pensez à Google Apps Script comme à une boîte à outils magique (et gratuite) intégrée à votre compte Google. Elle vous permet de connecter vos applications (Gmail, Sheets, Calendar…) et de leur faire faire des choses qu’elles ne peuvent pas faire seules.
Aujourd’hui, nous allons lui apprendre à être votre assistant personnel pour l’organisation de votre agenda.
Le Guide : Mettre en place votre script de coloration
Nous allons passer à l’action. Ne vous inquiétez pas, il s’agit principalement de copier-coller et de personnaliser une ou deux lignes.
Étape 1 : Ouvrir l’éditeur de scripts
Le moyen le plus simple est de vous rendre directement sur script.google.com.
- Cliquez sur « Nouveau projet » en haut à gauche.
- Donnez un nom à votre projet (par exemple : « Coloration Agenda »).
Étape 2 : Copier-coller le code
Effacez tout le contenu du fichier Code.gs (la fonction myFunction par défaut) et collez le code suivant à la place :
JavaScript
/**
* @license MIT
* Copyright (c) 2005 Fabrice Faucheux
*/
/**
* @OnlyCurrentDoc
* Ce script change la couleur des événements Google Agenda en fonction de
* l'organisateur ou des invités, en parcourant les 30 prochains jours.
*/
// ------------------------------------------------------------------
// ▼▼▼ C'EST ICI QU'IL FAUT PERSONNALISER ▼▼▼
// ------------------------------------------------------------------
/**
* Configuration des couleurs basées sur l'email de l'ORGANISATEUR.
* Les emails doivent être en minuscules.
* Priorité 1 : Ces règles sont vérifiées en premier.
*/
const COULEURS_PAR_ORGANISATEUR = {
'manager@entreprise.com': CalendarApp.EventColor.RED,
'admin-support@entreprise.com': CalendarApp.EventColor.GRAY
};
/**
* Configuration des couleurs basées sur l'email des INVITÉS.
* Les emails doivent être en minuscules.
* Priorité 2 : Ces règles sont vérifiées si aucune règle "Organisateur"
* n'a été trouvée pour l'événement.
*/
const COULEURS_PAR_INVITE = {
'client-important@exemple.com': CalendarApp.EventColor.ORANGE,
'partenaire-strategique@exemple.com': CalendarApp.EventColor.MAUVE, // MAUVE = VIOLET
'contact-presse@exemple.com': CalendarApp.EventColor.YELLOW
};
// ------------------------------------------------------------------
// ▲▲▲ FIN DE LA ZONE DE PERSONNALISATION ▲▲▲
// ------------------------------------------------------------------
/**
* Calcule une date future en ajoutant un nombre de jours à aujourd'hui.
* @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;
};
/**
* Trouve une couleur de règle pour un participant (organisateur ou invité).
* @param {GoogleAppsScript.Calendar.CalendarEventGuest[]} invites - La liste des participants.
* @param {Object} reglesCouleur - L'objet de configuration (ex: COULEURS_PAR_ORGANISATEUR).
* @param {boolean} [estOrganisateur=false] - Si true, cherche l'organisateur. Sinon, cherche les invités.
* @returns {{couleur: string, email: string}|null} L'objet {couleur, email} ou null si non trouvé.
*/
const trouverRegleParticipant = (invites, reglesCouleur, estOrganisateur = false) => {
const participantTrouve = invites.find(inv => {
const email = inv.getEmail().toLowerCase();
return inv.isOrganizer() === estOrganisateur && reglesCouleur[email];
});
if (participantTrouve) {
const email = participantTrouve.getEmail().toLowerCase();
return {
couleur: reglesCouleur[email],
email: email
};
}
return null;
};
/**
* 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 couleurOriginale = evenement.getColor();
const invites = evenement.getGuestList(true);
if (!invites || invites.length === 0) {
return;
}
let nouvelleCouleur = null;
let participantMatch = null;
// Priorité 1: Vérifier l'organisateur
const regleOrganisateur = trouverRegleParticipant(invites, COULEURS_PAR_ORGANISATEUR, true);
if (regleOrganisateur) {
nouvelleCouleur = regleOrganisateur.couleur;
participantMatch = regleOrganisateur.email;
} else {
// Priorité 2: Vérifier les invités (non-organisateurs)
const regleInvite = trouverRegleParticipant(invites, COULEURS_PAR_INVITE, false);
if (regleInvite) {
nouvelleCouleur = regleInvite.couleur;
participantMatch = regleInvite.email;
}
}
if (nouvelleCouleur && nouvelleCouleur !== couleurOriginale) {
evenement.setColor(nouvelleCouleur);
Logger.log(`Événement "${evenement.getTitle()}" coloré (Règle: ${participantMatch}).`);
}
} catch (erreur) {
Logger.log(`ERREUR lors du traitement de l'événement ID ${evenement.getId()} ("${evenement.getTitle()}"): ${erreur.message}`);
}
};
/**
* Fonction principale
*/
function colorerEvenements() {
try {
const calendrier = CalendarApp.getDefaultCalendar();
if (!calendrier) {
throw new Error("Impossible d'accéder au calendrier par défaut.");
}
const maintenant = new Date();
const dateFin = calculerDateFuture(30);
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;
}
Logger.log(`${evenements.length} événement(s) trouvé(s). Début du traitement...`);
evenements.forEach(traiterEvenement);
Logger.log('Coloration des événements terminée.');
} catch (erreur) {
Logger.log(`ERREUR CRITIQUE dans colorerEvenements: ${erreur.message}`);
Logger.log(`Stack: ${erreur.stack}`);
}
}
Étape 3 : Personnaliser le script (Le plus important !)
Remontez au début du code, dans la section « C’EST ICI QU’IL FAUT PERSONNALISER ».
C’est ici que vous définissez VOS règles :
COULEURS_PAR_ORGANISATEUR: Applique une couleur si l’organisateur de l’événement correspond. C’est la priorité 1.- Exemple :
'manager@entreprise.com': CalendarApp.EventColor.RED, - Traduction : « Si mon manager m’envoie une invitation, colore-la en ROUGE. »
- Exemple :
COULEURS_PAR_INVITE: Si aucun organisateur ne correspond, le script vérifie si l’un des invités (qui n’est pas l’organisateur) est dans cette liste.- Exemple :
'client-important@exemple.com': CalendarApp.EventColor.ORANGE, - Traduction : « Si j’invite ce client important à une réunion, colore-la en ORANGE. »
- Exemple :
Comment trouver les noms des couleurs ?
C’est simple ! Tapez juste CalendarApp.EventColor. (avec le point) et l’éditeur vous proposera la liste : RED, ORANGE, YELLOW, GREEN, CYAN, BLUE, MAUVE (violet), GRAY (gris), etc.
Remplacez les adresses email et les couleurs d’exemple par les vôtres. N’oubliez pas de mettre les emails en minuscules et entre apostrophes !
Étape 4 : Enregistrer et Exécuter
- Cliquez sur l’icône Enregistrer (la disquette).
- Dans la barre d’outils, assurez-vous que la fonction
colorerEvenementsest sélectionnée, puis cliquez sur « Exécuter ». - Autorisation (La première fois seulement) : Google vous demandera la permission d’exécuter ce script.
- Cliquez sur « Examiner les autorisations ».
- Choisissez votre compte.
- Vous verrez un avertissement « Google n’a pas validé cette application ». C’est normal ! C’est votre propre script.
- Cliquez sur « Paramètres avancés » (ou « Afficher les détails »), puis sur « Accéder à [Nom de votre script] (non sécurisé) ».
- Cliquez sur « Autoriser » pour permettre au script de gérer votre agenda.
Une fois autorisé, le script va s’exécuter. Allez voir votre agenda, la magie devrait avoir opéré sur les 30 prochains jours !
Étape bonus : Rendre l’automatisation… automatique !
C’est super, mais faut-il cliquer sur « Exécuter » tous les jours ? Non ! Nous allons mettre en place un déclencheur.
- Dans l’éditeur de script, cliquez sur l’icône « Déclencheurs » (l’horloge) dans la barre de gauche.
- Cliquez sur le bouton bleu « + Ajouter un déclencheur » en bas à droite.
- Configurez-le comme suit :
- Fonction à exécuter :
colorerEvenements - Sélectionnez la source de l’événement :
Basé sur l'heure - Type de déclencheur basé sur l’heure :
Quotidien(ou « Toutes les heures » si vous êtes très occupé !) - Heure de la journée : Choisissez une heure (par exemple, « entre 2h et 3h du matin » pour qu’il s’exécute la nuit).
- Fonction à exécuter :
- Cliquez sur Enregistrer.
Et voilà ! Chaque jour (ou chaque heure), votre script se lancera tout seul et réorganisera les couleurs de votre agenda pour les 30 prochains jours.
Conclusion
Vous venez de créer votre premier (ou peut-être pas votre premier !) assistant Google Workspace. Vous avez non seulement un agenda plus propre, mais vous avez aussi appris à dompter Google Apps Script pour vous faire gagner du temps.
N’hésitez pas à adapter les règles dans le code : vous pourriez ajouter plus de clients, des collègues spécifiques, ou même des projets (si vous avez des adresses email de groupe de projet).
Alors, à vous de jouer !
Et vous ? Quelles sont vos astuces d’automatisation ou d’organisation sur Google Workspace ? Partagez-les en commentaire ci-dessous !