Beispielszenario für Office-Skripts: Automatisierte Aufgabenerinnerungen

In diesem Szenario verwalten Sie ein Projekt. Sie verwenden ein Excel-Arbeitsblatt, um die status Ihrer Mitarbeiter jeden Monat nachzuverfolgen. Sie müssen die Benutzer häufig daran erinnern, ihre status auszufüllen, daher haben Sie sich entschieden, diesen Erinnerungsprozess zu automatisieren.

Sie erstellen einen Power Automate-Flow, um Personen mit fehlenden status Feldern zu nachrichten und ihre Antworten auf das Arbeitsblatt anzuwenden. Zu diesem Ziel entwickeln Sie ein Skriptpaar, um die Arbeit mit der Arbeitsmappe zu verarbeiten. Das erste Skript ruft eine Liste von Personen mit leeren Status ab, und das zweite Skript fügt der rechten Zeile eine status Zeichenfolge hinzu. Sie verwenden auch adaptive Teams-Karten, damit Mitarbeiter ihre status direkt aus der Benachrichtigung eingeben.

Behandelte Skriptfähigkeiten

  • Erstellen von Flows in Power Automate
  • Übergeben von Daten an Skripts
  • Zurückgeben von Daten aus Skripts
  • Adaptive Teams-Karten
  • Tabellen

Voraussetzungen

In diesem Szenario werden Power Automate und Microsoft Teams verwendet.

Setupanweisungen

Herunterladen der Arbeitsmappe

  1. Laden Sie die Beispielarbeitsmappe auf OneDrive herunter.

  2. Öffnen Sie die Arbeitsmappe in Excel.

Erstellen der Skripts

  1. Zunächst benötigen wir ein Skript, um alle Mitarbeiter mit status Berichten abzurufen, die in der Kalkulationstabelle fehlen. Wählen Sie auf der Registerkarte Automatisierendie Option Neues Skript aus, und fügen Sie das folgende Skript in den Editor ein.

    /**
     * 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. Speichern Sie das Skript mit dem Namen Get Personen.

  3. Als Nächstes benötigen wir ein zweites Skript, um die status Berichtskarten zu verarbeiten und die neuen Informationen in das Arbeitsblatt einzufügen. Wählen Sie im Aufgabenbereich Code-Editor die Option Neues Skript aus, und fügen Sie das folgende Skript in den Editor ein.

    /**
     * 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. Speichern Sie das Skript mit dem Namen Status speichern.

Erstellen des Power Automate-Flows

  1. Öffnen Sie die Registerkarte Erstellen in Power Automate.

    Tipp

    Wenn Sie noch keinen Flow erstellt haben, lesen Sie unser Tutorial Starten der Verwendung von Skripts mit Power Automate , um die Grundlagen zu erlernen.

  2. Erstellen Sie einen neuen Instant Cloud Flow.

  3. Wählen Sie in den Optionen Manuell einen Flow auslösen aus, und wählen Sie Erstellen aus.

  4. Der Flow muss das Skript get Personen aufrufen, um alle Mitarbeiter mit leeren status Feldern abzurufen. Wählen Sie im Flow-Generator die + Schaltfläche und dann Aktion hinzufügen aus. Wählen Sie die Aktion Skript ausführen des Excel Online (Business)-Connectors aus. Geben Sie die folgenden Einträge für den Flowschritt an:

    • Location: OneDrive for Business
    • Document Library: OneDrive
    • Datei: task-reminders.xlsx (über den Dateibrowser ausgewählt)
    • Skript: Abrufen Personen

    Die abgeschlossene Aktion Skript ausführen.

  5. Als Nächstes muss der Flow jeden Mitarbeiter im Array verarbeiten, das vom Skript zurückgegeben wird. Fügen Sie die adaptive post-Karte des Microsoft Teams-Connectors hinzu, und warten Sie auf eine Antwortaktion.

  6. Zum Senden einer adaptiven Karte muss der JSON-Code des Karte als Nachricht bereitgestellt werden. Sie können die adaptive Karte Designer verwenden, um benutzerdefinierte Karten zu erstellen. Verwenden Sie für dieses Beispiel den folgenden JSON-Code.

    {
      "$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. Fügen Sie für das Feld EmpfängerE-Mail aus dem dynamischen Inhalt hinzu (die Auswahl enthält das Excel-Logo). Das Hinzufügen von E-Mail bewirkt, dass der Flowschritt von einem For each-Block umgeben wird. Das bedeutet, dass das Array von Power Automate durchlaufen wird.

  8. Füllen Sie die verbleibenden Felder wie folgt aus:

    • Posten als: Flow-Bot
    • Posten in: Chatten mit dem Flow-Bot
    • Nachricht aktualisieren: Vielen Dank, dass Sie Ihren status Bericht übermittelt haben. Ihre Antwort wurde dem Arbeitsblatt erfolgreich hinzugefügt.

    Der Power Automate-Flow mit der abgeschlossenen aktion adaptiven Karte.

  9. Fügen Sie im For each-Block nach dem adaptiven Karte und Warten auf eine Antwortaktion eine neue Aktion hinzu. Wählen Sie die Aktion Skript ausführen des Excel Online (Business)-Connectors aus. Geben Sie die folgenden Einträge für den Flowschritt an:

    • Location: OneDrive for Business
    • Document Library: OneDrive
    • Datei: task-reminders.xlsx (über den Dateibrowser ausgewählt)
    • Skript: Speicherstatus
    • senderEmail: email (dynamischer Inhalt aus Excel)
    • statusReportResponse: Antwort (dynamischer Inhalt aus Teams)

    Der Power Automate-Flow mit dem Schritt

  10. Speichern Sie den Flow. Der Flow-Designer sollte wie in der folgenden Abbildung aussehen.

    Ein Diagramm des abgeschlossenen Flusses, das zwei Schritte zeigt, die zu einem For each-Steuerelement und zwei Schritten innerhalb des For each-Steuerelements führen.

Ausführen des Flows

Stellen Sie zum Testen des Flows sicher, dass alle Tabellenzeilen mit leeren status eine E-Mail-Adresse verwenden, die an ein Teams-Konto gebunden ist (Sie sollten beim Testen wahrscheinlich Ihre eigene E-Mail-Adresse verwenden). Verwenden Sie die Schaltfläche Test auf der Flow-Editor-Seite, oder führen Sie den Flow über die Registerkarte Meine Flows aus. Achten Sie darauf, den Zugriff zuzulassen, wenn Sie dazu aufgefordert werden.

Sie sollten eine adaptive Karte von Power Automate über Teams erhalten. Nachdem Sie das feld status im Karte ausgefüllt haben, wird der Ablauf fortgesetzt und das Arbeitsblatt mit dem von Ihnen angegebenen status aktualisiert.

Vor dem Ausführen des Flows

Ein Arbeitsblatt mit einem status Bericht, der einen fehlenden status Eintrag enthält.

Empfangen der adaptiven Karte

Eine adaptive Karte in Teams, die den Mitarbeiter um ein status Update bittet.

Nach dem Ausführen des Flows

Ein Arbeitsblatt mit einem status Bericht mit einem jetzt ausgefüllten status Eintrag.