Verwenden von Office-Skripts und Power Automate zum Senden von Bildern eines Diagramms und einer Tabelle per E-Mail

In diesem Beispiel werden Office-Skripts und Power Automate verwendet, um ein Diagramm zu erstellen. Es sendet dann Bilder des Diagramms und seiner Basistabelle per E-Mail.

Beispielszenario

  • Berechnen Sie, um die neuesten Ergebnisse zu erhalten.
  • Diagramm erstellen.
  • Abrufen von Diagramm- und Tabellenbildern.
  • Email die Images mit Power Automate.

Eingabedaten

Ein Arbeitsblatt mit einer Tabelle mit Eingabedaten.

Ausgabediagramm

Das erstellte Säulendiagramm mit dem vom Kunden fälligen Betrag.

Email, die über den Power Automate-Flow empfangen wurden

Die vom Flow gesendete E-Mail mit dem excel-Diagramm, das in den Textkörper eingebettet ist.

Lösung

Diese Lösung umfasst zwei Teile:

  1. Ein Office-Skript zum Berechnen und Extrahieren von Excel-Diagrammen und -Tabellen
  2. Ein Power Automate-Flow zum Aufrufen des Skripts und zum Senden der Ergebnisse per E-Mail. Ein Beispiel dazu finden Sie unter Erstellen eines automatisierten Workflows mit Power Automate.

Setup: Excel-Beispieldatei

Diese Arbeitsmappe enthält die Daten, Objekte und Formatierungen, die vom Skript erwartet werden.

Beispielcode: Berechnen und Extrahieren von Excel-Diagrammen und -Tabellen

Fügen Sie der Beispielarbeitsmappe das folgende Skript hinzu. Verwenden Sie in Excel Dasneue Skriptautomatisieren>, um den Code einzufügen und das Skript zu speichern. Speichern Sie es als Diagrammbild abrufen , und probieren Sie das Beispiel selbst aus!

function main(workbook: ExcelScript.Workbook): ReportImages {
  // Recalculate the workbook to ensure all tables and charts are updated.
  workbook.getApplication().calculate(ExcelScript.CalculationType.full);

  // Get the data from the "InvoiceAmounts" table.
  const sheet1 = workbook.getWorksheet("Sheet1");
  const table = workbook.getWorksheet('InvoiceAmounts').getTables()[0];
  const rows = table.getRange().getTexts();

  // Get only the "Customer Name" and "Amount due" columns, then remove the "Total" row.
  const selectColumns = rows.map((row) => {
    return [row[2], row[5]];
  });
  table.setShowTotals(true);
  selectColumns.splice(selectColumns.length - 1, 1);
  console.log(selectColumns);

  // Delete the "ChartSheet" worksheet if it's present, then recreate it.
  workbook.getWorksheet('ChartSheet')?.delete();
  const chartSheet = workbook.addWorksheet('ChartSheet');

  // Add the selected data to the new worksheet.
  const targetRange = chartSheet.getRange('A1').getResizedRange(selectColumns.length - 1, selectColumns[0].length - 1);
  targetRange.setValues(selectColumns);

  // Insert the chart on sheet 'ChartSheet' at cell "D1".
  const chart = chartSheet.addChart(ExcelScript.ChartType.columnClustered, targetRange);
  chart.setPosition('D1');

  // Get images of the chart and table, then return them for a Power Automate flow.
  const chartImage = chart.getImage();
  const tableImage = table.getRange().getImage();
  return { chartImage, tableImage };
}

// The interface for table and chart images.
interface ReportImages {
  chartImage: string
  tableImage: string
}

Power Automate-Flow: Email diagramm- und tabellenimages

Dieser Flow führt das Skript aus und sendet die zurückgegebenen Bilder per E-Mail.

  1. Erstellen Sie einen neuen Instant Cloud Flow.

  2. Wählen Sie Manuell einen Flow auslösen und dann Erstellen aus.

  3. Dieses Beispiel erfordert Power Automate-Features, die im neuen Flow-Designer nicht unterstützt werden (Hinzufügen von HTML zu einer E-Mail). Wechseln Sie zum alten Designer mit der Umschaltfläche in der oberen rechten Ecke des Bildschirms. Die Umschaltfläche, um den neuen Flow-Designer im Aus-Zustand zu verwenden.

  4. Fügen Sie einen Neuen Schritt hinzu, der den Excel Online (Business) -Connector mit der Aktion Skript ausführen verwendet. Verwenden Sie die folgenden Werte für die Aktion.

    • Location: OneDrive for Business
    • Document Library: OneDrive
    • Datei: email-chart-table.xlsx (mit der Dateiauswahl ausgewählt)
    • Skript: Abrufen eines Diagrammbilds

    Der fertige Excel Online (Business)-Connector in Power Automate.

  5. In diesem Beispiel wird Outlook als E-Mail-Client verwendet. Sie können einen beliebigen E-Mail-Connector verwenden, den Power Automate unterstützt, aber in den restlichen Schritten wird davon ausgegangen, dass Sie Outlook ausgewählt haben. Fügen Sie einen Neuen Schritt hinzu, der den Office 365 Outlook-Connector und die Aktion Senden und E-Mail (V2) verwendet. Verwenden Sie die folgenden Werte für die Aktion.

    • An: Ihr Test-E-Mail-Konto (oder persönliche E-Mail-Adresse)
    • Betreff: Überprüfen Sie die Berichtsdaten.
    • Wählen Sie für das Feld Text die Option "Codeansicht" (</>) aus, und geben Sie Folgendes ein:
    <p>Please review the following report data:<br>
    <br>
    Chart:<br>
    <br>
    <img src="data:image/png;base64,@{outputs('Run_script')?['body/result/chartImage']}"/>
    <br>
    Data:<br>
    <br>
    <img src="data:image/png;base64,@{outputs('Run_script')?['body/result/tableImage']}"/>
    <br>
    </p>
    

    Der abgeschlossene Office 365 Outlook-Connector in Power Automate.

  6. Speichern Sie den Flow, und probieren Sie ihn aus. 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.

Schulungsvideo: Extrahieren und E-Mail-Bilder von Diagrammen und Tabellen

Sehen Sie sich sudhi Ramamurthy an, wie Sie dieses Beispiel auf YouTube durchgehen.