Aujourd'hui, une demande un peu particulière d'une collègue : est il possible d'exporter une liste de mails dans Google Sheets en fonction d'une recherche dans Gmail?
En réfléchissant quelque peu, avec quelques lignes de script, c'est tout à fait possible.
D'une recherche Gmail,
vous l'indiquez dans la cellule B1
Et vous lancer le menu Extraction Emails pour retrouver dans cet exemple
- Date
- De
- Vers
- Sujet
- Lien vers l'email
A noter qu'avant bien entendu, il vous faudra saisir le code ci dessous dans l'éditeur de script.
/**
* @OnlyCurrentDoc
*/
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Extraction Emails')
.addItem('Extraction Emails...', 'extractEmails')
.addToUi();
}
// Extraction des mails depuis une recherche
function extractEmails() {
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var feuille = classeur.getActiveSheet();
var plagedeDonnees = feuille.getRange(2, 1, feuille.getMaxRows(), feuille.getMaxColumns());
plagedeDonnees.clearContent();
try {
feuille.getDataRange();
var banding = feuille.getDataRange().getBandings()[0];
banding.remove();
} catch (e) {
}
var recherche = feuille.getRange(1,2).getValue();
// get all email threads that match label from Sheet
var threads = GmailApp.search(recherche);
var listArray = [];
listArray.push(['Date','De','Vers', 'Sujet', 'Lien du message'])
for (var i = 0 ; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var m = 0; m < messages.length; m++) {
var msg = messages[m].getBody();
var date = Utilities.formatDate(messages[m].getDate(),"GMT","dd-MM-yyyy");
var de = messages[m].getFrom()
var vers = messages[m].getTo();
var sujet = messages[m].getSubject();
var id = "https://mail.google.com/mail/u/0/#all/"
+ messages[m].getId();
listArray.push([date, de, vers, sujet, id]);
Logger.log(i);
}
}
feuille.getRange(3, 1, listArray.length, listArray[0].length).setValues(listArray);
var font = 'Proxima Nova';
feuille.getRange(3, 1, listArray.length, listArray[0].length).setFontFamily(font);
feuille.getRange(4, 1, listArray.length, listArray[0].length).sort({column: 1, ascending: true});
}
* @OnlyCurrentDoc
*/
function onOpen() {
var ui = SpreadsheetApp.getUi();
ui.createMenu('Extraction Emails')
.addItem('Extraction Emails...', 'extractEmails')
.addToUi();
}
// Extraction des mails depuis une recherche
function extractEmails() {
var classeur = SpreadsheetApp.getActiveSpreadsheet();
var feuille = classeur.getActiveSheet();
var plagedeDonnees = feuille.getRange(2, 1, feuille.getMaxRows(), feuille.getMaxColumns());
plagedeDonnees.clearContent();
try {
feuille.getDataRange();
var banding = feuille.getDataRange().getBandings()[0];
banding.remove();
} catch (e) {
}
var recherche = feuille.getRange(1,2).getValue();
// get all email threads that match label from Sheet
var threads = GmailApp.search(recherche);
var listArray = [];
listArray.push(['Date','De','Vers', 'Sujet', 'Lien du message'])
for (var i = 0 ; i < threads.length; i++) {
var messages = threads[i].getMessages();
for (var m = 0; m < messages.length; m++) {
var msg = messages[m].getBody();
var date = Utilities.formatDate(messages[m].getDate(),"GMT","dd-MM-yyyy");
var de = messages[m].getFrom()
var vers = messages[m].getTo();
var sujet = messages[m].getSubject();
var id = "https://mail.google.com/mail/u/0/#all/"
+ messages[m].getId();
listArray.push([date, de, vers, sujet, id]);
Logger.log(i);
}
}
feuille.getRange(3, 1, listArray.length, listArray[0].length).setValues(listArray);
var font = 'Proxima Nova';
feuille.getRange(3, 1, listArray.length, listArray[0].length).setFontFamily(font);
feuille.getRange(4, 1, listArray.length, listArray[0].length).sort({column: 1, ascending: true});
}