Tutorial: Automatisches Speichern von Inhalten aus E-Mails in einer Arbeitsmappe

In diesem Tutorial erfahren Sie, wie Sie ein Office-Skript für Excel mit einem automatisierten Power Automate-Workflow verwenden. Das Skript wird jedes Mal, wenn Sie eine E-Mail erhalten, automatisch ausgeführt, um Informationen aus der E-Mail in einer Excel-Arbeitsmappe aufzuzeichnen. Die Möglichkeit, Daten aus anderen Anwendungen in ein Office-Skript zu übertragen, bietet Ihnen ein hohes Maß an Flexibilität und Freiheit für Ihre automatisierten Prozesse.

Tipp

Wenn Sie noch nicht mit Office-Skripts vertraut sind, empfehlen wir Ihnen, mit Tutorial: Erstellen und Formatieren einer Excel-Tabelle zu beginnen. Wenn Sie noch nicht mit Power Automate vertraut sind, empfehlen wir Ihnen, mit Tutorial: Aktualisieren einer Kalkulationstabelle aus einem Power Automate-Flow zu beginnen. Office-Skripts verwenden TypeScript, und dieses Lernprogramm richten sich an Anfänger bis Fortgeschrittene mit JavaScript oder TypeScript. Wenn Sie noch nicht mit JavaScript vertraut sind, empfehlen wir Ihnen, mit dem Mozilla-JavaScript-Lernprogramm zu beginnen.

Voraussetzungen

Für dieses Tutorial benötigen Sie Zugriff auf Office-Skripts und Power Automate. Überprüfen Sie die Plattformunterstützung , wenn die Registerkarte Automatisieren nicht angezeigt wird. In den häufig gestellten Fragen zur Power Automate-Registrierung finden Sie Informationen zu den ersten Schritten mit Power Automate.

Vorbereiten der Arbeitsmappe

Power Automate sollte für den Zugriff auf Arbeitsmappenkomponenten keine relativen Bezüge wie Workbook.getActiveWorksheet verwenden. Daher benötigen Sie eine Arbeitsmappe und ein Arbeitsblatt mit konsistenten Namen, auf die Power Automate verweisen kann.

  1. Erstellen Sie eine neue Arbeitsmappe mit dem Namen Mein Arbeitsblatt.

  2. Wechseln Sie zur Registerkarte Automatisieren , und wählen Sie Neues Skript aus.

  3. Ersetzen Sie den vorhandenen Code durch den folgenden Code, und wählen Sie Ausführen aus. Dadurch wird die Arbeitsmappe mit konsistenten Namen für Arbeitsblatt, Tabelle und PivotTable eingerichtet.

    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"));
    }
    

Erstellen eines Office-Skripts

Erstellen Sie ein Skript, das Informationen aus einer E-Mail protokolliert. Sie sollten nachverfolgen, an welchen Wochentagen Sie die meisten E-Mails erhalten und wie viele eindeutige Absender diese E-Mail senden. Ihre Arbeitsmappe enthält eine Tabelle mit den Spalten Datum, Wochentag, Email Adresse und Betreff. Ihr Arbeitsblatt verfügt auch über eine PivotTable, die am Wochentag und Email Adresse (dies sind die Zeilenhierarchien) pivotiert. Die Anzahl eindeutiger Themen entspricht den aggregierten Informationen, die angezeigt werden (die Datenhierarchie). Das Skript aktualisiert diese PivotTable, nachdem die E-Mail-Tabelle aktualisiert wurde.

  1. Wählen Sie im Aufgabenbereich Code-Editor die Option Neues Skript aus.

  2. Der Flow, den Sie später im Tutorial erstellen, sendet die Skriptinformationen zu jeder empfangenen E-Mail. Das Skript muss diese Eingabe über Parameter in der main-Funktion akzeptieren. Ersetzen Sie das Standardskript durch das folgende Skript.

    function main(
      workbook: ExcelScript.Workbook,
      from: string,
      dateReceived: string,
      subject: string) {
    
    }
    
  3. Das Skript benötigt Zugriff auf die Tabelle und die PivotTable der Arbeitsmappe. Fügen Sie den folgenden Code zum Textkörper des Skripts nach dem öffnenden {hinzu.

    // 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. Der dateReceived-Parameter ist vom Typ string. Konvertieren Sie diese in ein Date -Objekt , damit Sie problemlos den Wochentag abrufen können. Danach müssen Sie den Zahlenwert des Tages einer besser lesbaren Version zuordnen. Fügen Sie den folgenden Code am Ende Ihres Skripts vor dem schließenden }hinzu.

      // 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. Die subject-Zeichenfolge enthält möglicherweise das „RE:“-Antworttag. Entfernen Sie diese aus der Zeichenfolge, damit E-Mails im selben Thread denselben Betreff für die Tabelle haben. Fügen Sie den folgenden Code am Ende Ihres Skripts vor dem schließenden }hinzu.

    // 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. Nachdem die E-Mail-Daten formatiert wurden, fügen Sie der E-Mail-Tabelle eine Zeile hinzu. Fügen Sie den folgenden Code am Ende Ihres Skripts vor dem schließenden }hinzu.

    // Add the parsed text to the table.
    table.addRow(-1, [dateReceived, dayName, from, subjectText]);
    
  7. Stellen Sie abschließend sicher, dass die PivotTable aktualisiert wird. Fügen Sie den folgenden Code am Ende des Skripts vor der schließenden } hinzu:

    // Refresh the PivotTable to include the new row.
    pivotTable.refresh();
    
  8. Benennen Sie das Skript in E-Mail aufzeichnen um, und wählen Sie Skript speichern aus.

Jetzt ist Ihr Skript bereit für einen Power Automate-Workflow. Es sollte wie das folgende Skript aussehen.

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();
}

Erstellen eines automatisierten Workflows mit Power Automate

  1. Melden Sie sich an der Power Automate-Website an.

  2. Wählen Sie in dem Menü, das auf der linken Seite des Bildschirms angezeigt wird, Erstellen aus. Damit gelangen Sie zur Liste der Möglichkeiten zum Erstellen neuer Workflows.

    Die Power Automate-Schaltfläche „Erstellen“.

  3. Wählen Sie im Abschnitt Start from blank die Option Automated flow aus. Dadurch wird ein Workflow erstellt, der von einem Ereignis ausgelöst wird, z. B. das Empfangen einer E-Mail.

    Die Option für den automatisierten Fluss in Power Automate.

  4. Geben Sie im daraufhin angezeigten Dialogfenster einen Namen für den Fluss im Textfeld Flow name ein. Wählen Sie unter Select your flow's trigger (Flowauslöser auswählen) die Option When a new email arrives (Wenn eine neue E-Mail eingeht) aus der Liste der Optionen aus. Möglicherweise müssen Sie mithilfe des Suchfelds nach der Option suchen. Wählen Sie abschließend Erstellen aus.

    Ein Teil des Power Automate-Flusses zeigt den ‚Flussnamen‘ und die Optionen zum Auswählen des Triggers für den Fluss. Der Flussname ist ‚E-Mail-Fluss-Datensatz‘, und der Trigger ist die Option ‚Wenn eine neue E-Mail in Outlook eintrifft‘.

    Hinweis

    In diesem Lernprogramm wird Outlook verwendet. Sie können stattdessen Ihren bevorzugten E-Mail-Dienst verwenden, obwohl einige Optionen unterschiedlich sein können.

  5. Wählen Sie im Flow-Generator die + Schaltfläche und dann Aktion hinzufügen aus.

  6. Suchen Sie im Aufgabenbereich Aktion hinzufügen nach "Excel-Ausführungsskript". Wählen Sie die Aktion Skript ausführen des Excel Online (Business)-Connectors aus. Diese Aktion führt ein Skript aus Ihrem OneDrive in einer Arbeitsmappe aus. Wenn Sie ein Skript verwenden möchten, das in der SharePoint-Bibliothek Ihres Teams gespeichert ist, sollten Sie die Aktion Skript aus einer SharePoint-Bibliothek ausführen verwenden.

    Der Aufgabenbereich für die Aktionsauswahl mit Aktionen für den Excel Online (Business)-Connector. Die Aktion Skript ausführen ist hervorgehoben.

  7. Möglicherweise werden Sie aufgefordert, sich bei Ihrem Microsoft 365-Konto anzumelden. Führen Sie dies aus, um das Tutorial fortzusetzen.

  8. Als nächstes wählen Sie die Arbeitsmappe und das Skript aus, die im Ablaufschritt verwendet werden sollen. Für das Tutorial verwenden Sie die Arbeitsmappe, die Sie in Ihrem OneDrive erstellt haben. Sie können auch eine beliebige Arbeitsmappe in einer OneDrive- oder SharePoint-Website verwenden. Geben Sie die folgenden Parameter für die Aktion Skript ausführen an:

    • Location: OneDrive for Business
    • Document Library: OneDrive
    • File: MyWorkbook.xlsx (Ausgewählt über den Dateibrowser)
    • Script: E-Mail aufzeichnen
    • ScriptParameters/from: From (dynamischer Inhalt aus Outlook)
    • ScriptParameters/dateReceived: Empfangene Zeit (dynamischer Inhalt aus Outlook)
    • ScriptParameters/subject: Betreff (dynamischer Inhalt aus Outlook)

    Beachten Sie, dass die Parameter für das Skript nur angezeigt werden, wenn das Skript ausgewählt wurde.

    Die Aktion zum Ausführen eines Skripts in PowerAutomate zeigt die Optionen an, die erscheinen, nachdem das Skript ausgewählt wurde.

  9. Wählen Sie Speichern aus.

    Die Schaltfläche Speichern in Power Automate.

Der Fluss ist nun aktiviert. Er wird das Skript automatisch jedes Mal ausführen, wenn Sie eine E-Mail über Outlook erhalten.

Verwalten des Skripts in Power Automate

  1. Wählen Sie auf der Hauptseite der Power Automate-Seite My Flows aus.

    Die Schaltfläche „Meine Flows“ in Power Automate.

  2. Wählen Sie Ihren Flow aus. Hier sehen Sie den Ausführungsverlauf. Sie können die Seite aktualisieren, oder Sie können die Schaltfläche All runs auswählen, um den Verlauf zu aktualisieren. Der Flow wird kurz nach Empfang einer E-Mail ausgelöst. Testen Sie den Flow durch Senden von E-Mails.

Wenn der Flow ausgelöst und das Skript erfolgreich ausgeführt wird, sollten die Tabelle und die PivotTable der Arbeitsmappe aktualisiert werden.

Ein Arbeitsblatt, auf dem die E-Mail-Tabelle angezeigt wird, nachdem der Fluss dreimal ausgeführt wurde.

Ein Arbeitsblatt, auf dem die PivotTable angezeigt wird, nachdem der Fluss dreimal ausgeführt wurde

Problembehandlung

Das gleichzeitige Empfangen mehrerer E-Mails kann zu Mergekonflikten in Excel führen. Dieses Risiko wird verringert, indem der E-Mail-Connector so festgelegt wird, dass er nur auf jeweils eine E-Mail reagiert. Gehen Sie dazu wie folgt vor:

  1. Wählen Sie die Aktion "E-Mail kommt an" und dann Einstellungen aus.

  2. Legen Sie in den angezeigten Optionen unter Einstellungen die Parallelitätssteuerung auf Ein fest. Legen Sie dann den Grad der Parallelität auf 1 fest.

    Die Parallelitätsoptionen im Menü

Nächste Schritte

Tutorial : Senden wöchentlicher E-Mail-Erinnerungen basierend auf Tabellenkalkulationsdaten. Hier lernen Sie, wie Sie Daten aus einem Skript an den Flow zurückgeben.

Sie können sich auch das Beispielszenario Automatisierte Aufgabenerinnerungen ansehen, um zu erfahren, wie Sie Office-Skripts und Power Automate mit Teams Adaptive Cards kombinieren können.