Partager via


Utiliser Des scripts Office et Power Automate pour envoyer par e-mail des images d’un graphique et d’un tableau

Cet exemple utilise des scripts Office et Power Automate pour créer un graphique. Il envoie ensuite par e-mail des images du graphique et de sa table de base.

Exemple de scénario

  • Calculez pour obtenir les résultats les plus récents.
  • Créer un graphique.
  • Obtenir des images de graphique et de tableau.
  • Email les images avec Power Automate.

Données d’entrée

Feuille de calcul montrant une table de données d’entrée.

Graphique de sortie

Histogramme créé indiquant le montant dû par le client.

Email reçus via le flux Power Automate

E-mail envoyé par le flux montrant le graphique Excel incorporé dans le corps.

Solution

Cette solution comprend deux parties :

  1. Un script Office pour calculer et extraire un graphique et un tableau Excel
  2. Un flux Power Automate pour appeler le script et envoyer les résultats par e-mail. Pour obtenir un exemple sur la façon de procéder, consultez Créer un workflow automatisé avec Power Automate.

Configuration : Exemple de fichier Excel

Ce classeur contient les données, les objets et la mise en forme attendus par le script.

Exemple de code : Calculer et extraire un graphique et un tableau Excel

Ajoutez le script suivant à l’exemple de classeur. Dans Excel, utilisez Automatiser>le nouveau script pour coller le code et enregistrer le script. Enregistrez-le sous Obtenir l’image de graphique et essayez l’exemple vous-même !

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
}

Flux Power Automate : Email le graphique et les images de tableau

Ce flux exécute le script et envoie les images retournées par e-mail.

  1. Créez un flux cloud instantané.

  2. Choisissez Déclencher manuellement un flux , puis sélectionnez Créer.

  3. Cet exemple nécessite des fonctionnalités Power Automate qui ne sont pas prises en charge dans le nouveau concepteur de flux (ajout de code HTML à un e-mail). Basculez vers l’ancien concepteur avec le bouton bascule dans le coin supérieur droit de l’écran. Bascule pour utiliser le nouveau concepteur de flux dans l’état désactivé.

  4. Ajoutez une nouvelle étape qui utilise le connecteur Excel Online (Business) avec l’action Exécuter le script . Utilisez les valeurs suivantes pour l’action.

    Connecteur Excel Online (Business) terminé dans Power Automate.

  5. Cet exemple utilise Outlook comme client de messagerie. Vous pouvez utiliser n’importe quel connecteur de messagerie pris en charge par Power Automate, mais le reste des étapes suppose que vous avez choisi Outlook. Ajoutez une nouvelle étape qui utilise le connecteur Office 365 Outlook et l’action Envoyer et envoyer un e-mail (V2). Utilisez les valeurs suivantes pour l’action.

    • À : votre compte de messagerie de test (ou e-mail personnel)
    • Objet : Veuillez consulter les données du rapport
    • Pour le champ Corps , sélectionnez « Mode Code » (</>) et entrez ce qui suit :
    <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>
    

    Connecteur Office 365 Outlook terminé dans Power Automate.

  6. Enregistrez le flux et essayez-le. 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é.

Vidéo de formation : Extraire et envoyer par e-mail des images de graphique et de tableau

Regardez Sudhi Ramamurthy parcourir cet exemple sur YouTube.