Suite à une question sur la communauté d'aide de Gmail où l'utilisateur était désemparé par la suppression de tous ces contacts depuis Google Contacts et aussi du vidage de la corbeille (Oui ça fait beaucoup ... de bêtises), j'ai pensé à un script pour au moins récupérer toutes les adresses emails ayant interagi dans Gmail.
Le script est composé de deux fonctions, une pour réaliser la recherche et écrire les emails dans une feuille de calcul et un script pour retirer les doublons.
function extractionEmailAdresse() {
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var feuille = classeur.getSheets()[0];
var aujourdhui = new Date();
var jour = aujourdhui.getDate();
var mois = aujourdhui.getMonth();
var annee = aujourdhui.getFullYear();
var recherche = "before:" + annee + "/" + mois + "/" + jour
// Traiter 50 fils Gmail en un lot pour éviter les erreurs d'exécution de script
var conversations = GmailApp.search(recherche, 0, 50);
var row, messages, from, email;
try {
for (var x = 0; x < conversations.length; x++) {
// Utiliser une expression régulière
// pour extraire une adresse électronique valide
de = conversations[x].getMessages()[0].getFrom();
de = de.match(/\S+@\S+\.\S+/g);
if (de.length) {
email = de[0];
email = email.replace('>', '');
email = email.replace('<', '');
row = feuille.getLastRow() + 1;
// Si une adresse électronique est trouvée, ajoutez-la à la feuille.
feuille.getRange(row, 1).setValue(email);
}
a = conversations[x].getMessages()[0].getTo();
a = a.match(/\S+@\S+\.\S+/g);
if (a.length) {
email = a[0];
email = email.replace('>', '');
email = email.replace('<', '');
row = feuille.getLastRow() + 1;
// Si une adresse électronique est trouvée, ajoutez-la à la feuille.
feuille.getRange(row, 1).setValue(email);
}
}
} catch (e) {
Logger.log(e.toString());
Utilities.sleep(5000);
}
retirerLesDoublons();
GmailApp.sendEmail(Session.getActiveUser().getEmail(), 'Extraction effectuée',
'Téléchargez les contacts à partir de ' + classeur.getUrl());
}
// Suppression des adresses électroniques en double
function retirerLesDoublons() {
var feuille = SpreadsheetApp.getActiveSheet();
var data = feuille.getRange(2, 1, feuille.getLastRow()).getValues();
var newData = new Array();
for (i in data) {
var row = data[i];
var duplicate = false;
for (j in newData) {
if (row[0] == newData[j][0]) {
duplicate = true;
}
}
if (!duplicate) {
newData.push(row);
}
}
// Mettre les adresses e-mails uniques dans la feuille Google
feuille.getRange(2, 2, newData.length, newData[0].length).setValues(newData);
}
Convaincu par les outils Google Workspace, sachez que vous pouvez profiter d'un test gratuit de 14 jours en cliquant sur le bouton ci dessous.