Organiser automatiquement vos emails Gmail avec Google Sheets et Apps Script
La gestion des emails est une tâche incontournable dans la vie professionnelle. Pourtant, trier manuellement chaque email peut vite devenir chronophage. Et même si les filtres Gmail sont très utiles, ils montrent parfois leurs limites dès que des règles complexes ou évolutives sont nécessaires. Imaginez un système qui classe vos emails en fonction de l’expéditeur, de certains mots-clés, ou de la présence de pièces jointes, tout en laissant la gestion des paramètres dans un simple fichier Google Sheets.
Dans cet article, nous vous proposons un script Google Apps Script qui vous permettra de trier et d’archiver vos emails Gmail automatiquement, tout en gérant les paramètres de tri dans une feuille Google Sheets, afin d’ajuster les critères sans jamais modifier le code.
Pourquoi automatiser la gestion des emails Gmail ?
Automatiser la gestion des emails apporte de nombreux avantages :
- Gain de temps : Plus besoin de trier les emails manuellement.
- Flexibilité : Les paramètres de tri sont stockés dans un fichier Google Sheets et peuvent être modifiés à tout moment.
- Efficacité : Le tri se base sur plusieurs critères (expéditeur, mots-clés, présence de pièces jointes), pour un classement des emails optimisé.
Configuration de la feuille Google Sheets pour les paramètres
- Créer une feuille Google Sheets nommée Paramètres pour y stocker les critères de tri.
- Ajouter les colonnes suivantes :
- Type de Filtre : Spécifie le type de filtre (Expéditeur, Mot Clé, Pièce Jointe).
- Valeur : La valeur du filtre (adresse email, mot-clé, etc.).
- Libellé : Le nom du libellé sous lequel l’email sera classé.
Voici un exemple de configuration dans Google Sheets :
Type de Filtre | Valeur | Libellé |
---|---|---|
Expéditeur | client@exemple.com | Clients |
Expéditeur | collegue@exemple.com | Collègues |
Expéditeur | info@exemple.com | Informations |
Mot Clé | urgent | Urgents |
Mot Clé | réunion | Réunions |
Pièce Jointe | Avec Pièce Jointe | PJ Reçues |
Le code de tri automatique des emails
Ce code est conçu pour :
- Lire les paramètres de tri dans la feuille Google Sheets.
- Filtrer les emails en fonction de l’expéditeur, des mots-clés dans l’objet, et de la présence de pièces jointes.
- Appliquer le libellé spécifié et archiver l’email une fois classé.
Voici le script :
function trierEmailsGmail() { const feuilleParamètres = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Paramètres'); if (!feuilleParamètres) { throw new Error("La feuille 'Paramètres' n'existe pas."); } // Récupération des paramètres depuis la feuille const données = feuilleParamètres.getRange("A2:C" + feuilleParamètres.getLastRow()).getValues(); const expéditeurs = {}; const motsClés = []; let libelleAvecPJ = 'PJ Reçues'; // Libellé par défaut pour les pièces jointes données.forEach(([typeFiltre, valeur, libelle]) => { if (typeFiltre === 'Expéditeur' && valeur && libelle) { expéditeurs[valeur] = libelle; } else if (typeFiltre === 'Mot Clé' && valeur && libelle) { motsClés.push({ mot: valeur.toLowerCase(), libelle }); } else if (typeFiltre === 'Pièce Jointe' && valeur) { libelleAvecPJ = libelle; } }); // Préparation des libellés pour éviter des créations multiples const labelsCache = {}; function getLabel(nom) { if (!labelsCache[nom]) { labelsCache[nom] = GmailApp.getUserLabelByName(nom) || GmailApp.createLabel(nom); } return labelsCache[nom]; } // Récupération des emails non lus dans la boîte de réception const threads = GmailApp.getInboxThreads(0, 50); // Limité à 50 pour cet exemple threads.forEach(thread => { try { const messages = thread.getMessages(); let threadTraité = false; // Filtrage par expéditeur pour tout le thread messages.forEach(message => { const expéditeur = message.getFrom(); for (const [email, libelle] of Object.entries(expéditeurs)) { if (expéditeur.includes(email)) { thread.addLabel(getLabel(libelle)); threadTraité = true; break; } } }); if (threadTraité) { thread.moveToArchive(); return; } // Filtrage par mots-clés pour tout le thread messages.forEach(message => { const sujet = message.getSubject().toLowerCase(); for (const { mot, libelle } of motsClés) { if (sujet.includes(mot)) { thread.addLabel(getLabel(libelle)); threadTraité = true; break; } } }); if (threadTraité) { thread.moveToArchive(); return; } // Filtrage par présence de pièce jointe pour tout le thread if (messages.some(message => message.getAttachments().length > 0)) { thread.addLabel(getLabel(libelleAvecPJ)); thread.moveToArchive(); } } catch (erreur) { console.error(`Erreur lors du traitement du thread : ${erreur.message}`); } }); }
Explication du script
- Lecture des paramètres : Le script lit les informations de tri dans Google Sheets et stocke chaque filtre selon son type.
- Gestion des libellés : Un cache de libellés est utilisé pour minimiser les appels API répétitifs et rendre le script plus efficace.
- Tri des emails : Le script trie les emails en fonction des expéditeurs, des mots-clés dans le sujet et de la présence de pièces jointes.
- Archivage des emails : Une fois classé, chaque fil d’email est archivé pour éviter un traitement redondant.
Comment utiliser le script ?
- Créer une feuille Google Sheets avec le format des paramètres ci-dessus.
- Ajouter le script dans Google Apps Script : Collez le code dans l’éditeur de Google Apps Script lié à votre feuille Google Sheets.
- Ajouter un déclencheur : Programmez le script pour s’exécuter automatiquement à intervalles réguliers (par exemple, chaque heure) en utilisant les déclencheurs d’événement basés sur le temps dans Google Apps Script.
En combinant Google Sheets et Google Apps Script, nous avons mis en place un système automatisé, flexible et personnalisable pour organiser vos emails Gmail sans toucher au code. Ce script s’adapte facilement aux besoins évolutifs en matière de tri d’emails, en simplifiant la gestion et en permettant de se concentrer sur les emails les plus importants.
Ce système d’automatisation des emails est un excellent exemple de la puissance de Google Workspace pour optimiser les tâches répétitives. N’hésitez pas à adapter ce script selon vos besoins, en ajoutant d’autres types de filtres ou de règles de tri.