Partager via


Exemple de scénario de scripts Office : rappels de tâches automatisés

Dans ce scénario, vous gérez un projet. Vous utilisez une feuille de calcul Excel pour suivre les status de vos employés chaque mois. Vous devez souvent rappeler aux utilisateurs de remplir leur status. Vous avez donc décidé d’automatiser ce processus de rappel.

Vous allez créer un flux Power Automate pour envoyer un message aux personnes avec des champs status manquants et appliquer leurs réponses à la feuille de calcul. Pour ce faire, vous allez développer une paire de scripts pour gérer l’utilisation du classeur. Le premier script obtient une liste de personnes avec des états vides et le deuxième script ajoute une chaîne status à la ligne de droite. Vous utiliserez également les cartes adaptatives Teams pour permettre aux employés d’entrer leur status directement à partir de la notification.

Compétences en écriture de scripts couvertes

  • Créer des flux dans Power Automate
  • Passer des données à des scripts
  • Retourner des données à partir de scripts
  • Cartes adaptatives Teams
  • Tableaux

Conditions préalables

Ce scénario utilise Power Automate et Microsoft Teams.

Instructions d’installation

Télécharger le classeur

  1. Téléchargez l’exemple de classeur sur votre OneDrive.

  2. Ouvrez le classeur dans Excel.

Créer les scripts

  1. Tout d’abord, nous avons besoin d’un script pour obtenir tous les employés dont les rapports status sont manquants dans la feuille de calcul. Sous l’onglet Automatiser , sélectionnez Nouveau script et collez le script suivant dans l’éditeur.

    /**
     * This script looks for missing status reports in a project management table.
     *
     * @returns An array of Employee objects (containing their names and emails).
     */
    function main(workbook: ExcelScript.Workbook): Employee[] {
      // Get the first worksheet and the first table on that worksheet.
      let sheet = workbook.getFirstWorksheet()
      let table = sheet.getTables()[0];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the data for the whole table.
      let bodyRangeValues = table.getRangeBetweenHeaderAndTotal().getValues();
    
      // Create the array of Employee objects to return.
      let people: Employee[] = [];
    
      // Loop through the table and check each row for completion.
      for (let i = 0; i < bodyRangeValues.length; i++) {
        let row = bodyRangeValues[i];
        if (row[STATUS_REPORT_INDEX] === "") {
          // Save the email to return.
          people.push({ name: row[NAME_INDEX].toString(), email: row[EMAIL_INDEX].toString() });
        }
      }
    
      // Log the array to verify we're getting the right rows.
      console.log(people);
    
      // Return the array of Employees.
      return people;
    }
    
    /**
     * An interface representing an employee.
     * An array of Employees will be returned from the script
     * for the Power Automate flow.
     */
    interface Employee {
      name: string;
      email: string;
    }
    
  2. Enregistrez le script sous le nom Get Personnes.

  3. Ensuite, nous avons besoin d’un deuxième script pour traiter les cartes de rapport status et placer les nouvelles informations dans la feuille de calcul. Dans le volet Office Éditeur de code, sélectionnez Nouveau script et collez le script suivant dans l’éditeur.

    /**
     * This script applies the results of a Teams Adaptive Card about
     * a status update to a project management table.
     *
     * @param senderEmail - The email address of the employee updating their status.
     * @param statusReportResponse - The employee's status report.
     */
    function main(workbook: ExcelScript.Workbook,
      senderEmail: string,
      statusReportResponse: string) {
    
      // Get the first worksheet and the first table in that worksheet.
      let sheet = workbook.getFirstWorksheet();
      let table = sheet.getTables()[0];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the range and data for the whole table.
      let bodyRange = table.getRangeBetweenHeaderAndTotal();
      let tableRowCount = bodyRange.getRowCount();
      let bodyRangeValues = bodyRange.getValues();
    
      // Create a flag to denote success.
      let statusAdded = false;
    
      // Loop through the table and check each row for a matching email address.
      for (let i = 0; i < tableRowCount && !statusAdded; i++) {
        let row = bodyRangeValues[i];
    
        // Check if the row's email address matches.
        if (row[EMAIL_INDEX] === senderEmail) {
          // Add the Teams Adaptive Card response to the table.
          bodyRange.getCell(i, STATUS_REPORT_INDEX).setValues([
            [statusReportResponse]
          ]);
          statusAdded = true;
        }
      }
    
      // If successful, log the status update.
      if (statusAdded) {
        console.log(
          `Successfully added status report for ${senderEmail} containing: ${statusReportResponse}`
        );
      }
    }
    
  4. Enregistrez le script avec le nom Enregistrer l’état.

Créer le flux Power Automate

  1. Ouvrez l’onglet Créer de Power Automate.

    Conseil

    Si vous n’avez pas encore créé de flux, case activée notre tutoriel Commencer à utiliser des scripts avec Power Automate pour découvrir les bases.

  2. Créez un flux cloud instantané.

  3. Choisissez Déclencher manuellement un flux dans les options, puis sélectionnez Créer.

  4. Le flux doit appeler le script Get Personnes pour obtenir tous les employés avec des champs status vides. Dans le générateur de flux, sélectionnez le + bouton et Ajouter une action. Sélectionnez l’action Exécuter le script du connecteur Excel Online (Business). Fournissez les entrées suivantes pour l’étape de flux :

    • Emplacement : OneDrive Entreprise
    • Bibliothèque de documents : OneDrive
    • Fichier : task-reminders.xlsx (choisi par le biais de l’explorateur de fichiers)
    • Script : Obtenir Personnes

    Action Exécuter le script terminée.

  5. Ensuite, le flux doit traiter chaque employé dans le tableau retourné par le script. Ajoutez le post-carte adaptatif du connecteur Microsoft Teamset attendez une action de réponse.

  6. L’envoi d’une carte adaptative nécessite que le json de l’carte soit fourni en tant que message. Vous pouvez utiliser la carte adaptative Designer pour créer des cartes personnalisées. Pour cet exemple, utilisez le code JSON suivant.

    {
      "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.0",
      "body": [
        {
          "type": "TextBlock",
          "size": "Medium",
          "weight": "Bolder",
          "text": "Update your Status Report"
        },
        {
          "type": "Image",
          "altText": "",
          "url": "https://i.imgur.com/f5RcuF3.png"
        },
        {
          "type": "TextBlock",
          "text": "This is a reminder to update your status report for this month's review. You can do so right here in this card, or by adding it directly to the spreadsheet.",
          "wrap": true
        },
        {
          "type": "Input.Text",
          "placeholder": "My status report for this month is...",
          "id": "response",
          "isMultiline": true
        }
      ],
      "actions": [
        {
          "type": "Action.Submit",
          "title": "Submit",
          "id": "submit"
        }
      ]
    }
    
  7. Pour le champ Destinataire , ajoutez un e-mail à partir du contenu dynamique (la sélection aura le logo Excel). L’ajout d’un e-mail entraîne l’entouré de l’étape de flux par un bloc For each . Cela signifie que le tableau sera itéré par Power Automate.

  8. Renseignez les champs restants comme suit :

    • Publier en tant que : Bot de flux
    • Publier dans : Discuter avec le bot Flow
    • Message de mise à jour : Merci d’avoir soumis votre rapport status. Votre réponse a été correctement ajoutée à la feuille de calcul.

    Flux Power Automate montrant l’action de carte adaptative terminée.

  9. Dans le bloc Pour chaque, après le carte adaptatif Post et attendre une action de réponse, ajoutez une nouvelle action. Sélectionnez l’action Exécuter le script du connecteur Excel Online (Business). Fournissez les entrées suivantes pour l’étape de flux :

    • Emplacement : OneDrive Entreprise
    • Bibliothèque de documents : OneDrive
    • Fichier : task-reminders.xlsx (choisi par le biais de l’explorateur de fichiers)
    • Script : Enregistrer l’état
    • senderEmail : e-mail (contenu dynamique d’Excel)
    • statusReportResponse : response (contenu dynamique de Teams)

    Flux Power Automate montrant l’étape appliquer à chaque étape.

  10. Enregistrez le flux. Le concepteur de flux doit ressembler à l’image suivante.

    Diagramme du flux terminé qui montre deux étapes menant à un contrôle For each et deux étapes dans le contrôle For each.

Exécution du flux

Pour tester le flux, assurez-vous que toutes les lignes de table avec des status vides utilisent une adresse e-mail liée à un compte Teams (vous devez probablement utiliser votre propre adresse e-mail lors du test). Utilisez le bouton Test de la page de l’éditeur de flux ou exécutez le flux via votre onglet Mes flux . Veillez à autoriser l’accès lorsque vous y êtes invité.

Vous devez recevoir une carte adaptative de Power Automate via Teams. Une fois que vous avez rempli le champ status dans le carte, le flux continue et met à jour la feuille de calcul avec les status que vous fournissez.

Avant d’exécuter le flux

Feuille de calcul avec un rapport status contenant une entrée status manquante.

Réception de la carte adaptative

Une carte adaptative dans Teams demandant à l’employé une mise à jour status.

Après l’exécution du flux

Feuille de calcul avec un rapport status avec une entrée de status maintenant remplie.