Power Automate – Comment récupérer le contenu d’emails dans Gmail et l’enregistrer dans Google Sheet

(Last Updated On: 7 mai 2020)

Voici une astuce pour automatiser le traitement d’e-mails : utiliser Power Automate (anciennement appelé Microsoft Flow) pour récupérer automatiquement les informations contenues dans des e-mails de notification (ici Gmail) et alimenter un tableau dans une feuille Google Sheet !

Supposons que vous receviez des e-mails automatiquement chaque fois qu’un évènement se produit : par exemple chaque fois qu’un utilisateur de votre site e-commerce achète un produit, ou bien dès qu’un processus dans votre entreprise est terminé.

Pour assurer le suivi de ce processus, vous alimentez une feuille Excel Online (ou Google Sheet) en insérant les informations contenues dans chaque e-mail dans une nouvelle ligne.

Cela peut être très fastidieux à faire manuellement à la longue, et aujourd’hui il est possible d’automatiser ce processus.

Concrètement, vous avez besoin de Power Automate, disponible en version d’essai gratuit, d’un compte Gmail et de créer une feuille Google Sheet dans votre espace Google Drive.

Voici en vidéo comment automatiser le flux entre Gmail et Google Sheet avec Power Automate 🤖

Pour cette exemple, j’ai créé une feuille Google Sheet avec en colonne les champs que je souhaite récupérer dans mes e-mails.

Créer un Flux automatique

Commencez par créer un nouveau flux automatique dans Power Automate :

Entrez le nom du flux :

La première étape d’un flux s’appelle un Trigger. C’est l’évènement déclenchant le flux. Nous allons choisir Gmail dans la liste des triggers :

Sélectionnez le (seul) trigger gmail When a new email arrives :

Ensuite, sélectionnez le libellé que vous avez préalablement configuré dans Gmail et qui met tous les e-mails au même endroit dans votre boîte mail. Cliquez sur New Step :

Récupérer le contenu des emails

Nous allons maintenant stocker le contenu de l’email dans des variables, afin de remplir dans l’étape d’après la feuille Google Sheet. On définit une première variable qui récupère tout le contenu de l’email :

Pour initialiser la valeur, choisir Dynamic Content et sélectionner Body. C’est ce qui contient le corps de texte de l’email. On choisit le type String (texte) pour notre variable :

A ce stade, enregistrez le flux et faites un test pour voir si le contenu est bien récupéré dans la variable :

Examinons le contenu de l’email récupéré dans un éditeur de texte. On note une structure avec une table HTML. Les éléments qu’on souhaite récupérer (ici fichier téléchargés, nom utilisateur, email) sont délimités par des balises <TD>:

Nous allons créer une deuxième variable, pour stocker les éléments du contenu, dans des variables distinctes. Pour cela on créé une variable Array pour stocker toutes les lignes du tableau de l’email dans des éléments distincts.

On initialise la valeur avec une expression Split comme ceci :
split(variables('RecupMessage'),'<td>')
  • le 1er argument : la 1ère variable créée contenant le corps de texte de l’email
  • le 2ème argument est le délimiteur, ici la balise <TD>. Indique à quel endroit scinder le texte. Il y a 4 balises TD dans l’e-mail, donc on devrait récupérer 5 éléments de tableau.

Une fois que les éléments qu’on souhaite récupérer sont stockés dans une table Array, on doit extraire le texte utile :

formules-jours-feries.xlsm</td>
</tr>

<tr>
<th style="text-align: left; padding: 0.5em 1em; color: #0073aa;">First Name</th>

Pour l’élément Fichier téléchargé, on utilise à nouveau une expression Split pour extraire le texte utile du texte inutile :

split(last(take(variables('RecupDonnees'),2)),'</td>')[0]

Le délimiteur </TD> permet de scinder le texte en 2 parties, la première partie étant celle qu’on souhaite conserver.

On fait de même avec les autres éléments (nom utilisateur, email).

Remplir le fichier Google Sheet

Une fois les variables créées, on insère une nouvelle étape pour remplir la Google Sheet :

Choisir Insert row, de cette manière à chaque nouvel email reçu une nouvelle ligne sera créée :

Renseignez la feuille Google Sheet à remplir. A noter qu’il faut avoir créé au moins une ligne d’en-têtes de colonnes au préalable.

Remplir les champs de la feuille avec les variables du flux :

Enfin, sauvegarder et tester le flux !

Si tout fonctionne bien, vous devriez avoir une nouvelle ligne créée à l’issue du test !

Voilà, j’espère que cet article vous a plu ainsi que la vidéo explicative.

🛫A la fin de la vidéo, je vais plus loin en vous montrant comment j’ai alimenté un rapport Power BI à partir de cette feuille Google Sheet ! Les explications viendront dans un prochain article…


Abonnez-vous si vous souhaitez être tenu(e) au courant de la sortie du prochain article 👏👏

Et vous, connaissez-vous Power Automate ? Quels sont les flux que vous souhaiteriez automatiser ? Répondez en commentaire👇

Souscrivez à ma newsletter :

2 commentaires

  1. sartori dit

    Bonjour,
    J’ai des soucis au niveau des variables (objet nom, mail).

    BadRequest. La variable « nom objet » de type « Integer » ne peut pas être initialisée ou mise à jour avec la valeur « Alerte de sécurité » de type « String ». La variable « nom objet » prend uniquement en charge les valeurs des types « Integer ».
    Quels types de champ faut-il mettre?

    Concernant googlesheets, faut-il mettre insérer les lignes, ou faire correspondre les lignes?

    Merci par avance,

    • Lionel dit

      Bonjour

      Je ne suis pas sûr de bien comprendre votre problème.
      Si vous souhaitez récupérer l’objet du mail, vous devez créer une nouvelle étape dans le flux et choisir le type string (texte), puis sélectionnez le contenu ‘subject‘, comme ceci :
      Objet du mail

      Pour Google Sheets, choisissez Insert row, de cette manière chaque e-mail créera une nouvelle ligne :
      Google Sheets

      Lionel

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *