Comment recenser les adresses e-mail envoyées sur Gmail avec Google Apps Script ?
Gérer ses contacts e-mail est une tâche essentielle, surtout lorsqu’il s’agit d’optimiser votre communication ou d’assurer un suivi de vos échanges professionnels. Cet article vous montre comment recenser automatiquement toutes les adresses e-mail auxquelles vous avez envoyé des messages sur Gmail au cours des cinq dernières années, directement dans un fichier Google Sheets. Grâce à Google Apps Script, cette automatisation simplifie un travail fastidieux et vous fait gagner un temps précieux.
Étape 1 : Pourquoi automatiser le recensement des e-mails envoyés ?
Recenser manuellement les e-mails envoyés peut être fastidieux et sujet à erreur. Voici pourquoi l’automatisation est idéale :
- Gain de temps : Pas besoin de parcourir vos messages un par un.
- Précision : Le script garantit qu’aucune adresse ne sera oubliée.
- Organisation : Les e-mails sont regroupés par domaine et triés dans un tableau clair.
Étape 2 : Les prérequis
Avant de commencer, vous aurez besoin de :
- Un compte Gmail actif avec des e-mails envoyés sur une période significative.
- Un fichier Google Sheets prêt à recevoir les données.
- Des autorisations pour exécuter un script sur Gmail et Google Sheets.
Étape 3 : Le code Google Apps Script
Voici le script à copier et coller dans l’éditeur de Google Apps Script :
/** * Recenser les adresses e-mail envoyées sur Gmail sur les 5 dernières années * * Ce script : * - Parcourt les e-mails envoyés sur Gmail au cours des 5 dernières années. * - Extrait les adresses e-mail des destinataires. * - Nettoie les adresses pour exclure les métadonnées (noms, chevrons, etc.). * - Filtre les adresses génériques ou indésirables (noreply, domaines spécifiques, etc.). * - Regroupe les e-mails par domaine dans une feuille Google Sheets. * - Trie les domaines et adresses par ordre alphabétique. * * Instructions : * 1. Ouvrez une feuille Google Sheets. * 2. Allez dans Extensions > Apps Script et collez ce script. * 3. Cliquez sur Exécuter (►), autorisez les accès, et vérifiez les résultats. */ function onOpen() { // Ajouter un menu personnalisé lors de l'ouverture de la feuille Google Sheets const ui = SpreadsheetApp.getUi(); ui.createMenu("Gestion des E-mails") // Nom du menu .addItem("Recenser les E-mails envoyés", "recenserEmailsEnvoyés") // Nom de l'élément et fonction associée .addToUi(); } function recenserEmailsEnvoyés() { // **Paramètres généraux** const dateActuelle = new Date(); // Date du jour const dateLimite = new Date(dateActuelle.setFullYear(dateActuelle.getFullYear() - 5)); // Date il y a 5 ans const dateLimiteTexte = `${("0" + dateLimite.getDate()).slice(-2)}/${("0" + (dateLimite.getMonth() + 1)).slice(-2)}/${dateLimite.getFullYear()}`; const requêteGmail = `in:sent after:${dateLimite.toISOString().split("T")[0].replace(/-/g, "/")}`; // Requête Gmail const tailleLot = 500; // Taille maximale d'un lot pour traiter les threads Gmail const carteEmails = new Map(); // Map pour regrouper les e-mails par domaine // **Fonction pour nettoyer les adresses e-mail** const nettoyerEmail = (email) => { const match = email.match(/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/); return match ? match[0] : null; }; // **Récupération des e-mails Gmail** const threads = GmailApp.search(requêteGmail); for (let début = 0; début < threads.length; début += tailleLot) { const lotThreads = threads.slice(début, début + tailleLot); lotThreads.forEach(thread => { thread.getMessages().forEach(message => { const destinataires = message.getTo().split(","); destinataires.forEach(email => { const emailNettoyé = nettoyerEmail(email.trim()); if (emailNettoyé) { const domaine = emailNettoyé.split("@")[1]; // Filtrer les adresses génériques ou indésirables if (domaine && !emailNettoyé.startsWith("noreply@") && !emailNettoyé.startsWith("no-reply@") && domaine !== "exemple.com") { if (!carteEmails.has(domaine)) { carteEmails.set(domaine, new Set()); } carteEmails.get(domaine).add(emailNettoyé); } } }); }); }); } // **Préparation de la feuille Google Sheets** const feuille = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Emails Envoyés") || SpreadsheetApp.getActiveSpreadsheet().insertSheet("Emails Envoyés"); feuille.clear(); // Nettoyer l'onglet existant feuille.appendRow(["Domaine", "Adresse Email"]); // En-tête // **Tri et insertion des données** const domainesTriés = Array.from(carteEmails.keys()).sort(); domainesTriés.forEach(domaine => { const emailsTriés = Array.from(carteEmails.get(domaine)).sort(); emailsTriés.forEach(email => { feuille.appendRow([domaine, email]); }); }); // Ajustement automatique des colonnes feuille.autoResizeColumns(1, 2); // **Message de confirmation** SpreadsheetApp.getUi().alert(`La liste des e-mails depuis le ${dateLimiteTexte} a été créée dans l'onglet "Emails Envoyés" !`); }
Étape 4 : Instructions pour exécuter le script
- Ouvrez Google Sheets et allez dans Extensions > Apps Script.
- Collez le script dans l’éditeur.
- Cliquez sur Enregistrer et donnez un nom à votre projet (par exemple, Recensement des e-mails).
- Cliquez sur ► (Exécuter) pour lancer le script.
- Autorisez les accès demandés par le script.
- Vérifiez les résultats dans l’onglet “Emails Envoyés” de votre fichier Google Sheets.
Étape 5 : Résultat attendu
Une fois le script exécuté, un tableau organisé est créé dans Google Sheets avec les colonnes suivantes :
- Domaine : Le domaine des adresses e-mail (ex. : gmail.com).
- Adresse Email : La liste des adresses e-mails correspondantes.
Améliorations et personnalisation
- Nettoyage avancé : Le script filtre automatiquement les e-mails génériques (comme noreply@).
- Tri alphabétique : Les domaines et adresses e-mail sont triés pour une meilleure lisibilité.
- Filtrage : Ajoutez des exclusions spécifiques (par exemple, ignorer certains domaines internes à votre organisation).
Ce script vous permet de gérer efficacement les contacts e-mail de vos envois Gmail sur les 5 dernières années. En quelques clics, vous obtenez une vue claire et organisée de vos échanges, sans effort manuel. N’hésitez pas à adapter ce script à vos besoins spécifiques, et profitez d’une gestion optimale de vos e-mails !