Поделиться через


Использование сценариев Office и Power Automate для отправки по электронной почте изображений диаграммы и таблицы

В этом примере для создания диаграммы используются сценарии Office и Power Automate. Затем он отправляет по электронной почте изображения диаграммы и ее базовой таблицы.

Пример сценария

  • Вычисление для получения последних результатов.
  • Создание диаграммы.
  • Получение изображений диаграмм и таблиц.
  • Email образы с помощью Power Automate.

Входные данные

Лист с таблицей входных данных.

Выходная диаграмма

Созданная гистограмма, показывающая сумму, причитающуюся клиенту.

Email, полученное через поток Power Automate

Сообщение электронной почты, отправленное потоком, на котором показана диаграмма Excel, внедренная в текст.

Решение

Это решение состоит из двух частей:

  1. Скрипт Office для вычисления и извлечения диаграммы и таблицы Excel
  2. Поток Power Automate для вызова скрипта и отправки результатов по электронной почте. Пример того, как это сделать, см. в статье Создание автоматизированного рабочего процесса с помощью Power Automate.

Настройка: пример файла Excel

Эта книга содержит данные, объекты и форматирование, ожидаемые скриптом.

Пример кода: вычисление и извлечение диаграммы и таблицы Excel

Добавьте следующий скрипт в пример книги. В Excel используйте команду Автоматизировать>новый скрипт , чтобы вставить код и сохранить скрипт. Сохраните его как получить изображение диаграммы и попробуйте пример самостоятельно!

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: Email изображений диаграмм и таблиц

Этот поток запускает скрипт и отправляет по электронной почте возвращенные образы.

  1. Создайте мгновенный облачный поток.

  2. Выберите Вручную активировать поток и нажмите кнопку Создать.

  3. Для этого примера требуются функции Power Automate, которые не поддерживаются в новом конструкторе потоков (добавление HTML в сообщение электронной почты). Переключитесь на старый конструктор с переключателем в правом верхнем углу экрана. Переключатель для использования нового конструктора потоков в отключенном состоянии.

  4. Добавьте новый шаг , использующий соединитель Excel Online (бизнес) с действием Выполнить скрипт . Используйте следующие значения для действия.

    Готовый соединитель Excel Online (бизнес) в Power Automate.

  5. В этом примере в качестве почтового клиента используется Outlook. Вы можете использовать любой соединитель электронной почты, поддерживаемый Power Automate, но в остальных шагах предполагается, что вы выбрали Outlook. Добавьте новый шаг, использующий соединитель Office 365 Outlook и действие Отправить и отправить по электронной почте (V2). Используйте следующие значения для действия.

    • По адресу: ваша тестовая учетная запись электронной почты (или личная электронная почта)
    • Тема: Просмотрите данные отчета
    • В поле Текст выберите "Представление кода" (</>) и введите следующее:
    <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>
    

    Завершенный соединитель Outlook Office 365 в Power Automate.

  6. Сохраните поток и опробуйте его. Нажмите кнопку Тестировать на странице редактора потоков или запустите поток через вкладку Мои потоки . Обязательно разрешите доступ при появлении запроса.

Обучающее видео: извлечение и отправка по электронной почте изображений диаграммы и таблицы

Посмотрите Судхи Рамамурти, пройдите этот пример на YouTube.