1. Livres & vidéos
  2. Google Apps Script
  3. Gmail avec GmailApp
Extrait - Google Apps Script Créez vos outils pour automatiser Google Workspace
Extraits du livre
Google Apps Script Créez vos outils pour automatiser Google Workspace Revenir à la page d'achat du livre

Gmail avec GmailApp

Introduction

Après avoir exploré l’automatisation autour de Google Drive, passons maintenant à GmailApp, le service natif d’Apps Script qui permet d’interagir directement avec Gmail. Avec ce service, il devient possible de lire, rechercher, organiser et envoyer des e-mails sans jamais quitter l’environnement Apps Script. C’est un outil puissant pour automatiser la gestion de sa boîte de réception et créer des envois personnalisés.

Découverte et premières manipulations

Avant de construire des projets plus avancés, il est important de se familiariser avec les bases du service GmailApp. Nous allons voir comment récupérer ses messages, lire leurs métadonnées et comprendre la structure des objets mis à disposition (threads et messages).

1. Présentation du service GmailApp

GmailApp est le point d’entrée qui donne accès à l’ensemble des fonctionnalités Gmail dans Apps Script. C’est grâce à lui que l’on peut parcourir les e-mails reçus, analyser leur contenu ou encore en envoyer de nouveaux. À la différence de l’API Gmail avancée, qui nécessite une activation spécifique, GmailApp est immédiatement disponible dans tout projet Apps Script.

Le service GmailApp repose sur plusieurs objets importants :

  • GmailApp : le point d’entrée pour accéder aux threads (conversations), aux messages, et envoyer des e-mails.

  • GmailThread : représente une conversation (un ensemble de messages regroupés). 

  • GmailMessage : représente un e-mail individuel.

Voyons un exemple simple, pour lire le sujet du dernier e-mail reçu.

function logLastEmailSubject() { 
  // Get the first thread in the inbox (most recent one) 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; 
 
  // Get the first message of this thread 
  const message = thread.getMessages()[0]; 
 
  // Log the subject 
  Logger.log("Last email subject: " + message.getSubject()); 
} 

Dans cet exemple, l’appel à getInboxThreads(0, 1) permet de récupérer le thread le plus récent de la boîte de réception. On utilise ensuite getMessages() pour obtenir la liste des e-mails de cette conversation, puis getSubject() afin d’afficher l’objet de l’e-mail.

images/15RI01.png

2. Parcourir ses messages

Lire ses e-mails avec Apps Script commence par la récupération des threads (conversations) dans Gmail. Chaque thread contient un ou plusieurs messages, que l’on peut...

Manipuler et envoyer des e-mails

1. Gérer les libellés et organiser ses e-mails

Dans Gmail, les libellés permettent de classer et organiser ses e-mails. Avec Apps Script, il est possible de manipuler ces libellés pour automatiser l’organisation de la boîte de réception : ajouter un libellé à un e-mail, en créer un nouveau, retirer un libellé, ou encore filtrer directement par libellé.

function addLabelToThread() { 
  // Get the most recent thread 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; 
 
  // Create or get an existing label 
  const label = GmailApp.createLabel("ToReview"); 
 
  // Apply the label to the thread 
  thread.addLabel(label); 
 
  Logger.log("Label 'ToReview' added to thread: " + 
thread.getFirstMessageSubject()); 
} 

Ici, si le libellé ToReview n’existe pas encore, il est créé automatiquement. Ensuite, il est appliqué à la conversation la plus récente.

images/15RI05.png
images/15RI06.png

De façon similaire, il est possible de retirer un libellé.

function removeLabelFromThread() { 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; 
  const label = GmailApp.getUserLabelByName("ToReview"); 
 
  if (label) { 
    thread.removeLabel(label); 
    Logger.log("Label removed from thread: " + thread.getFirstMessageSubject()); 
  } 
} 

Ceci est utile pour automatiser un workflow : par exemple, retirer le libellé « À traiter » quand un script a terminé une action.

En ciblant un libellé, il est possible de récupérer toutes les conversations associées et d’automatiser leur traitement.

2. Envoyer un e-mail simple avec sendEmail()

En plus de lire les messages reçus, GmailApp permet bien sûr d’envoyer des e-mails. La méthode la plus basique est sendEmail(), qui envoie...

Cas pratiques et mini-projet

1. Marquer comme lu, archiver ou supprimer un e-mail

En plus d’envoyer et d’organiser ses e-mails avec des libellés, GmailApp permet aussi d’automatiser certaines actions de gestion courantes : marquer un e-mail comme lu ou non lu, l’archiver, ou encore le supprimer.

Ces opérations permettent de créer des workflows où les e-mails sont traités et classés automatiquement sans intervention manuelle.

Les méthodes markRead() et markUnread() sont utilisées respectivement pour marquer comme lu ou non lu :

function markAsReadUnread() { 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; // Most recent thread 
 
  // Mark as read 
  thread.markRead(); 
  Logger.log("Marked as read: " + thread.getFirstMessageSubject()); 
 
  // Mark as unread 
  thread.markUnread(); 
  Logger.log("Marked as unread: " + thread.getFirstMessageSubject()); 
} 

Ces méthodes sont pratiques pour signaler qu’un e-mail a été traité, ou au contraire le remettre en « non lu » pour le suivre plus tard.

Il est également possible d’archiver un e-mail, grâce à la fonction moveToArchive()

function archiveThread() { 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; 
  thread.moveToArchive(); 
  Logger.log("Thread archived: " + thread.getFirstMessageSubject ()); 
}  

L’archivage permet de nettoyer la boîte de réception sans supprimer définitivement l’e-mail, qui reste accessible via la recherche Gmail.

Pour le supprimer, il suffit d’utiliser moveToTrash().

function deleteThread() { 
  const thread = GmailApp.getInboxThreads(0, 1)[0]; 
  thread.moveToTrash();...