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 !