Récupérer les pièces jointes de votre messagerie Gmail

Il est fastidieux de retrouver toutes les pièces jointes présentes dans sa messagerie Gmail. Pour autant, en cas de perte de données suite à sinistre par exemple, le fait d'extraire toutes les pièces jointes peut s'avérer un début de piste pour retrouver ses données.



Dans ce cadre je vous propose de script permettant de récupération dans un dossier Drive ces pièces jointes.



// VARIABLES GLOBALES
//Tableau des extensions de fichiers que vous souhaitez extraire vers Drive
var typeFichierAExtraire = ['doc', 'docx', 'xls', 'xlsx', 'pdf'];
//Nom du dossier Drive dans lequel seront placés les fichiers
var nomDossier = 'GmailVersDrive';
//Nom du label qui sera appliqué après le traitement du message
var nomLibelle = 'GmailVersDrive';



function GmailVersDrive(){
//Construction d'une requête pour rechercher des courriels
var requete = '';
for(var i in typeFichierAExtraire){
requete += (requete === '' ?('filename:'+typeFichierAExtraire[i]) : (' OR filename:'+typeFichierAExtraire[i]));
}
requete = 'in:inbox has:nouserlabels ' + requete;
var conversations = GmailApp.search(requete);
var libelle = getGmailLabel_(nomLibelle);
var dossierParent;
if(conversations.length > 0){
dossierParent = getFolder_(nomDossier);
}
var racine = DriveApp.getRootFolder();
for(var i in conversations){
var messages = conversations[i].getMessages();
for(var j in messages){
// Obtenir des pièces jointes
var piecesJointes = messages[j].getAttachments();
for(var k in piecesJointes){
var pieceJointe = piecesJointes[k];
var estUnTypeDefini = testSiExtensionListee(pieceJointe);
if(!estUnTypeDefini) continue;
var pjBlob = pieceJointe.copyBlob();
var fichier = DriveApp.createFile(pjBlob);
dossierParent.addFile(fichier);
racine.removeFile(fichier);
}
}
conversations[i].addLabel(libelle);
}
}

//Cette fonction permet d'obtenir le dossier parent de Drive
function getFolder_(nomDossier){
var dossier;
var fi = DriveApp.getFoldersByName(nomDossier);
if(fi.hasNext()){
dossier = fi.next();
}
else{
dossier = DriveApp.createFolder(nomDossier);
}
return dossier;
}

function getGmailLabel_(nom){
var libelle = GmailApp.getUserLabelByName(nom);
if(!libelle){
libelle = GmailApp.createLabel(nom);
}
return libelle;
}

// La fonction vérifie le type d'extension de fichier et renvoie booléen
function testSiExtensionListee(pieceJointe){
var nomFichier = pieceJointe.getName();
var temp = nomFichier.split('.');
var extensionFichier = temp[temp.length-1].toLowerCase();
if(typeFichierAExtraire.indexOf(extensionFichier) !== -1) return true;
else return false;
}



Les seules modifications à opérer dans la ligne suivante où vous allez indiquer les extensions à rechercher dans votre messagerie.
var typeFichierAExtraire = ['doc', 'docx', 'xls', 'xlsx', 'pdf'];
Pour mettre en place le script, aller sur https://script.google.com/home puis Nouveau projet, copier / coller ce code et exécuter le.