Partager via


Tutoriel : Enregistrer automatiquement le contenu des e-mails dans un classeur

Ce tutoriel vous apprend à utiliser un script Office pour Excel avec un workflow Power Automate automatisé. Votre script s’exécute automatiquement chaque fois que vous recevez un courrier électronique, enregistrant les informations du courrier électronique dans un classeur Excel. La possibilité de transférer des données d’autres applications dans un script Office offre une flexibilité et une liberté considérables dans vos processus automatisés.

Conseil

Si vous débutez avec les scripts Office, nous vous recommandons de commencer par Tutoriel : Créer et mettre en forme un tableau Excel. Si vous débutez avec Power Automate, nous vous recommandons de commencer par Tutoriel : Mettre à jour une feuille de calcul à partir d’un flux Power Automate. Les scripts Office utilisent TypeScript, et ce didacticiel est destiné aux utilisateurs ayant des connaissances de niveau débutant à intermédiaire en JavaScript ou TypeScript. Si vous découvrez JavaScript, nous vous conseillons de commencer par consulter le didacticiel Mozilla JavaScript.

Conditions préalables

Pour ce didacticiel, vous devez accéder aux scripts Office et à Power Automate. Vérifiez la prise en charge de la plateforme si l’onglet Automatiser n’apparaît pas. Le FAQ sur l’inscription à Power Automate contient des informations sur la prise en main de Power Automate.

Préparer le classeur

Power Automate ne peut pas utiliser de références relatives comme Workbook.getActiveWorksheetpour accéder aux composants du classeur. Vous avez donc besoin d’un classeur et d’une feuille de calcul avec des noms cohérents que Power Automate doit référencer.

  1. Créer un nouveau classeur appelé MyWorkbook.

  2. Accédez à l’onglet Automatiser et sélectionnez Nouveau script.

  3. Remplacez le code existant par le script suivant et sélectionnez Exécuter. Cette opération permet de configurer le classeur avec des noms de feuille de calcul, de tableau et de tableau croisé dynamique cohérents.

    function main(workbook: ExcelScript.Workbook) {
      // Add a new worksheet to store the email table.
      let emailsSheet = workbook.addWorksheet("Emails");
    
      // Add data and create a table
      emailsSheet.getRange("A1:D1").setValues([
        ["Date", "Day of the week", "Email address", "Subject"]
      ]);
      let newTable = workbook.addTable(emailsSheet.getRange("A1:D2"), true);
      newTable.setName("EmailTable");
    
      // Add a new PivotTable to a new worksheet
      let pivotWorksheet = workbook.addWorksheet("Subjects");
      let newPivotTable = workbook.addPivotTable("Pivot", "EmailTable", pivotWorksheet.getRange("A3:C20"));
    
      // Setup the pivot hierarchies
      newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Day of the week"));
      newPivotTable.addRowHierarchy(newPivotTable.getHierarchy("Email address"));
      newPivotTable.addDataHierarchy(newPivotTable.getHierarchy("Subject"));
    }
    

Créer un script Office

Créez un script qui enregistre les informations d’un e-mail. Vous souhaiterez suivre les jours de la semaine où vous recevez le plus de messages et le nombre d’expéditeurs uniques qui envoient ce courrier. Votre classeur comporte une table avec les colonnes Date, Jour de la semaine, adresse Email et Objet. Votre feuille de calcul comporte également un tableau croisé dynamique qui pivote le jour de la semaine et Email adresse (il s’agit des hiérarchies de lignes). Le nombre de sujets uniques correspond aux informations agrégées affichées (hiérarchie des données). Le script actualise ce tableau croisé dynamique après la mise à jour de la table des e-mails.

  1. Dans le volet des tâches Éditeur de code, sélectionnez Nouveau script.

  2. Le flux que vous allez créer plus tard dans le tutoriel envoie les informations de script sur chaque e-mail reçu. Le script doit accepter cette entrée à l’aide de paramètres de la fonction main. Remplacez le script par défaut par le script suivant.

    function main(
      workbook: ExcelScript.Workbook,
      from: string,
      dateReceived: string,
      subject: string) {
    
    }
    
  3. Le script a besoin d’accéder à la table et au tableau croisé dynamique du classeur. Ajoutez le code suivant au corps du script, après l’ouverture {de .

    // Get the email table.
    let emailWorksheet = workbook.getWorksheet("Emails");
    let table = emailWorksheet.getTable("EmailTable");
    
    // Get the PivotTable.
    let pivotTableWorksheet = workbook.getWorksheet("Subjects");
    let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");
    
  4. Le paramètre dateReceived est de type string. Convertissez-le en objetDate pour obtenir facilement le jour de la semaine. Après cela, vous devez mapper la valeur numérique du jour à une version plus lisible. Ajoutez le code suivant à la fin de votre script, avant la fermeture }.

      // Parse the received date string to determine the day of the week.
      let emailDate = new Date(dateReceived);
      let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long' });
    
  5. La chaîne de subject peut inclure la balise de réponse « RE : ». Supprimez cela de la chaîne afin que les e-mails du même thread aient le même objet pour la table. Ajoutez le code suivant à la fin de votre script, avant la fermeture }.

    // Remove the reply tag from the email subject to group emails on the same thread.
    let subjectText = subject.replace("Re: ", "");
    subjectText = subjectText.replace("RE: ", "");
    
  6. Maintenant que les données d’e-mail ont été mises en forme, ajoutez une ligne à la table de courrier électronique. Ajoutez le code suivant à la fin de votre script, avant la fermeture }.

    // Add the parsed text to the table.
    table.addRow(-1, [dateReceived, dayName, from, subjectText]);
    
  7. Enfin, vérifiez que le tableau croisé dynamique est actualisé. Ajoutez le code suivant à la fin de votre script (avant la clôture }) :

    // Refresh the PivotTable to include the new row.
    pivotTable.refresh();
    
  8. Renommez votre script Enregistrer le courrier électronique, puis sélectionnez Enregistrer le script.

Votre script est maintenant prêt pour un flux de travail Power Automate. Il doit ressembler au script suivant.

function main(
  workbook: ExcelScript.Workbook,
  from: string,
  dateReceived: string,
  subject: string) {
  // Get the email table.
  let emailWorksheet = workbook.getWorksheet("Emails");
  let table = emailWorksheet.getTable("EmailTable");

  // Get the PivotTable.
  let pivotTableWorksheet = workbook.getWorksheet("Subjects");
  let pivotTable = pivotTableWorksheet.getPivotTable("Pivot");

  // Parse the received date string to determine the day of the week.
  let emailDate = new Date(dateReceived);
  let dayName = emailDate.toLocaleDateString("en-US", { weekday: 'long' });

  // Remove the reply tag from the email subject to group emails on the same thread.
  let subjectText = subject.replace("Re: ", "");
  subjectText = subjectText.replace("RE: ", "");

  // Add the parsed text to the table.
  table.addRow(-1, [dateReceived, dayName, from, subjectText]);

  // Refresh the PivotTable to include the new row.
  pivotTable.refresh();
}

Créer un flux de travail automatisé avec Power Automate

  1. Connectez-vous au site Power Automate.

  2. Dans le menu qui s’affiche sur le côté gauche de l’écran, sélectionnez Créer. Cela affiche une liste des moyens de créer de nouveaux flux de travail.

    Bouton de création de Power Automate

  3. Dans la section Démarrer à partir de zéro, sélectionnez Flux automatique. Cela permet de créer un flux de travail déclenché par un événement, par exemple, la réception d’un courrier électronique.

    L'option Flux automatisé dans Power Automate

  4. Dans la fenêtre de boîte de dialogue qui s’affiche, entrez un nom pour votre flux dans la zone de texte Nom du flux. Sous Choisir le déclencheur de votre flux, sélectionnez Quand un nouvel e-mail arrive dans la liste des options. Vous devrez peut-être rechercher l’option dans la zone de recherche. Pour terminer, sélectionnez le bouton Créer.

    Composant du flux Power Automate affichant les options « nom de flux » et « choisir le déclencheur de flux ». Le nom de flux est « Enregistrer le flux d’e-mail » et le déclencheur est l’option « Lorsqu’Outlook reçoit un nouvel e-mail ».

    Remarque

    Ce tutoriel utilise Outlook. N’hésitez pas à utiliser votre service de messagerie préféré, même si certaines options peuvent être différentes.

  5. Dans le générateur de flux, sélectionnez le + bouton et Ajouter une action.

  6. Dans le volet Office Ajouter une action , recherchez « Exécuter le script Excel ». Choisissez l’action Exécuter le script du connecteur Excel Online (Business). Cette action exécute un script à partir de votre OneDrive sur un classeur. Si vous souhaitez utiliser un script stocké dans la bibliothèque SharePoint de votre équipe, vous devez utiliser l’action Exécuter le script à partir d’une bibliothèque SharePoint .

    Volet Office sélection d’action montrant les actions pour le connecteur Excel Online (Business). L’action Exécuter le script est mise en surbrillance.

  7. Vous pouvez être invité à vous connecter à votre compte Microsoft 365. Faites-le pour continuer le didacticiel.

  8. Vous allez ensuite sélectionner le classeur et le script à utiliser dans l’étape de flux. À titre de didacticiel, vous allez utiliser le classeur précédemment créé dans OneDrive, mais vous pouvez utiliser n’importe quel classeur dans un site OneDrive ou SharePoint. Spécifiez les paramètres suivants pour l’action Exécuter le script :

    • Emplacement : OneDrive Entreprise
    • Bibliothèque de documents : OneDrive
    • Fichier : MyWorkbook.xlsx (choisi via l’Explorateur de fichiers)
    • Script : Enregistrer l’e-mail
    • ScriptParameters/from : De (contenu dynamique d’Outlook)
    • ScriptParameters/dateReceived : Heure de réception (contenu dynamique d’Outlook)
    • ScriptParameters/subject : Objet (contenu dynamique d’Outlook)

    Notez que les paramètres du script s’affichent uniquement une fois le script sélectionné.

    Action d’exécution de script Power Automate affichant les options qui s’affichent une fois le script sélectionné.

  9. Sélectionnez Enregistrer.

    Bouton Enregistrer dans Power Automate.

Votre flux est désormais activé. Il exécute automatiquement votre script chaque fois que vous recevez un courrier électronique via Outlook.

Gérer le script dans Power Automate

  1. Sur la page principale de Power Automate, sélectionnez Mes flux.

    Le bouton Mes flux dans Power Automate

  2. Sélectionnez votre flux. Ici, vous pouvez voir l’historique d’exécution. Vous pouvez actualiser la page ou sélectionner le bouton Actualiser toutes les exécutions pour mettre à jour l’historique. Le flux se déclenche peu après la réception d’un message électronique. Testez le flux en envoyant un courrier électronique.

Lorsque le flux est déclenché et exécute votre script correctement, la table du classeur et la mise à jour du tableau croisé dynamique doivent s’afficher.

Feuille de calcul affichant la table d’e-mail après l’exécution du flux à trois reprises.

Feuille de calcul affichant le tableau croisé dynamique après l’exécution du flux à trois reprises.

Résolution des problèmes

La réception simultanée de plusieurs courriers peut entraîner des conflits de fusion dans Excel. Ce risque est atténué en définissant le connecteur de messagerie électronique pour qu’il agisse uniquement sur un seul courrier à la fois. Pour cela :

  1. Sélectionnez l’action « L’e-mail arrive », puis sélectionnez Paramètres.

  2. Dans les options de Paramètres qui s’affichent, définissez le Contrôle de simultanéité sur Activé. Ensuite, définissez le Degré de parallélisme sur 1.

    Options de simultanéité dans le menu Paramètres.

Étapes suivantes

Suivre le tutoriel : Envoyer des rappels par e-mail hebdomadaires en fonction des données de la feuille de calcul. Il vous enseigne comment renvoyer les données d’un script vers le flux.

Vous pouvez également consulter le scénario type des rappels de tâches automatisés pour découvrir comment combiner les scripts Office et Power Automate avec les cartes adaptatives Teams.