Freigeben über


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. Ihr Skript wird automatisch ausgeführt, wenn Sie eine E-Mail erhalten und Informationen aus der E-Mail in einer Excel-Arbeitsmappe aufzeichnen. 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, beginnen Sie mit Tutorial: Erstellen und Formatieren einer Excel-Tabelle. Wenn Sie noch nicht mit Power Automate vertraut sind, beginnen Sie mit Tutorial: Aktualisieren einer Kalkulationstabelle aus einem Power Automate-Flow. 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, beginnen Sie mit dem Mozilla JavaScript-Tutorial.

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. In diesem Schritt wird die Arbeitsmappe mit konsistenten Arbeitsblatt-, Tabellen- und PivotTable-Namen 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 möchten 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 nach dem Wochentag und Email Adresse pivotiert (dies sind die Zeilenhierarchien). 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 kann das Antworttag "RE:" enthalten. Entfernen Sie dieses Tag 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 sind, 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 im Menü auf der linken Seite des Bildschirms Erstellen aus. Mit dieser Auswahl gelangen Sie zu einer Liste von 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. Diese Auswahl erstellt einen Workflow, der durch ein 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, aber einige Optionen können anders sein.

  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, verwenden Sie die Aktion Skript aus einer SharePoint-Bibliothek ausführen .

    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. Melden Sie sich an, um das Tutorial fortzusetzen.

  8. Wählen Sie als Nächstes die Arbeitsmappe und das Skript aus, die im Flowschritt verwendet werden sollen. Verwenden Sie für das Tutorial die Arbeitsmappe, die Sie auf Ihrem OneDrive erstellt haben, aber Sie können jede beliebige Arbeitsmappe auf 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 erst angezeigt werden, nachdem Sie das Skript ausgewählt haben.

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

  9. Klicken Sie auf Speichern.

    Die Schaltfläche Speichern in Power Automate.

Der Fluss ist nun aktiviert. Ihr Skript wird automatisch ausgeführt, 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 dem Empfang einer E-Mail ausgelöst. Testen Sie den Flow durch Senden von E-Mails.

Wenn der Flow das Skript auslöst und erfolgreich ausführt, wird die Tabelle und die PivotTable der Arbeitsmappe aktualisiert.

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 wie folgt vor, um diesen Schritt auszuführen:

  1. Wählen Sie die Aktion "E-Mail kommt ein" 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.