Automatiser la sauvegarde des pièces jointes PDF dans Google Drive avec Google Apps Script

Si vous recevez régulièrement des e-mails contenant des fichiers PDF importants et que vous souhaitez les organiser automatiquement dans Google Drive, cet article est fait pour vous. Aujourd’hui, je vais vous montrer comment créer un script simple avec Google Apps Script pour extraire les pièces jointes PDF de vos e-mails et les organiser automatiquement dans des dossiers spécifiques.

Objectif

L’objectif est de créer un script qui :

  • Parcourt les e-mails de votre boîte de réception.
  • Identifie les e-mails contenant des pièces jointes PDF.
  • Crée un dossier dans Google Drive au nom de l’expéditeur (s’il n’existe pas déjà).
  • Sauvegarde les fichiers PDF dans le dossier correspondant.
  • Archive l’e-mail pour éviter qu’il ne soit traité à nouveau.

Cela vous permet de gagner du temps, de rester organisé, et de ne jamais perdre une pièce jointe importante.

Étapes pour mettre en place le script

Étape 1 : Accéder à Google Apps Script

Tout d’abord, vous devez accéder à Google Apps Script. Voici les étapes :

1. Ouvrez Google Apps Script
2. Cliquez sur Nouveau Projet.

Étape 2 : Copier et coller le code

Voici le code que vous allez utiliser dans Google Apps Script :

function sauvegarderPiecesJointesPDFDansDrive() {
  const fils = GmailApp.search('in:inbox has:attachment');  // Recherche des e-mails avec pièces jointes
  const dossierPrincipal = DriveApp.getFolderById('ID_DU_DOSSIER');  // Remplacer par l'ID du dossier principal

  fils.forEach(fil => {
    const messages = fil.getMessages();
    let filTraite = false;  // Variable pour savoir si au moins un message a été traité dans le fil

    messages.forEach(message => {
      let expediteur = message.getFrom();
      const email = expediteur.match(/<(.*)>/);
      if (email && email[1]) {
        expediteur = email[1];
      }

      const nomDossierExpediteur = expediteur.replace(/[@.]/g, "_");  // Remplacer les "@" et "." pour des caractères valides
      const dossierExpediteur = obtenirOuCreerDossier(dossierPrincipal, nomDossierExpediteur);  // Chercher ou créer le dossier pour l'expéditeur

      const piecesJointes = message.getAttachments();
      piecesJointes.forEach(pj => {
        if (pj.getContentType() === "application/pdf") {  // Vérifier si la pièce jointe est un PDF
          dossierExpediteur.createFile(pj);  // Sauvegarder la pièce jointe dans le dossier de l'expéditeur
          Logger.log(`Fichier PDF sauvegardé depuis : ${expediteur}`);
          filTraite = true;  // Indiquer que le fil a été traité
        }
      });
    });

    if (filTraite) {
      fil.moveToArchive();  // Archiver le fil après traitement des pièces jointes
    }
  });
}

function obtenirOuCreerDossier(dossierParent, nomDossier) {
  const dossiers = dossierParent.getFoldersByName(nomDossier);
  if (dossiers.hasNext()) {
    return dossiers.next();  // Si le dossier existe, on le renvoie
  } else {
    return dossierParent.createFolder(nomDossier);  // Sinon, on le crée
  }
}

Étape 3 : Personnaliser le code

Avant de pouvoir exécuter le script, vous devez personnaliser une partie du code :

  • Remplacez l’ID du dossier : Dans le code ci-dessus, remplacez ‘ID_DU_DOSSIER’ par l’identifiant du dossier Google Drive où vous souhaitez enregistrer les PDF. Pour obtenir cet ID, accédez à votre dossier Google Drive, et dans l’URL, copiez la partie après folders/.

Étape 4 : Autoriser les permissions

Lorsque vous exécuterez le script pour la première fois, Google vous demandera de l’autoriser à accéder à votre compte Gmail et Google Drive. Suivez les instructions pour accorder ces autorisations.

Étape 5 : Exécuter le script

Vous pouvez maintenant tester le script en cliquant sur l’icône « Exécuter ». Le script parcourra vos e-mails, téléchargera les pièces jointes PDF, et les placera dans des dossiers correspondant aux expéditeurs.

Étape 6 : Automatiser l’exécution

Pour rendre ce processus totalement automatique, vous pouvez configurer un déclencheur pour que le script s’exécute régulièrement (par exemple, toutes les heures). Pour ce faire :

  1. Allez dans le menu Déclencheurs dans Google Apps Script.
  2. Cliquez sur Ajouter un déclencheur.
  3. Choisissez l’heure à laquelle vous voulez que le script s’exécute (par exemple, toutes les heures).

Comment fonctionne le script ?

  • Recherche d’e-mails avec pièces jointes PDF : Le script utilise GmailApp.search(‘in:inbox has:attachment’) pour rechercher tous les e-mails avec des pièces jointes dans la boîte de réception.
  • Création de dossiers par expéditeur : Pour chaque e-mail, le script crée un dossier basé sur l’adresse e-mail de l’expéditeur. Les caractères non valides pour les noms de dossiers (comme `@` et `.`) sont remplacés par des underscores (`_`).
  • Téléchargement et enregistrement des PDF : Si une pièce jointe est un PDF, elle est sauvegardée dans le dossier correspondant.
  • Archivage de l’e-mail : Une fois les pièces jointes traitées, le fil de discussion est archivé pour éviter un traitement en double.

Ce script est un excellent moyen d’automatiser la gestion des pièces jointes PDF dans Gmail et de les organiser directement dans Google Drive. Il vous permet de gagner du temps et de ne pas avoir à fouiller dans vos e-mails pour retrouver des documents importants. Si vous recevez beaucoup de fichiers PDF dans votre boîte de réception, c’est un outil incontournable !

N’hésitez pas à essayer ce script et à partager vos retours en commentaire. Si vous avez des questions ou des idées pour l’améliorer, je serai ravi de vous aider !