Использование сценариев Office и Power Automate для отправки по электронной почте изображений диаграммы и таблицы
В этом примере для создания диаграммы используются сценарии Office и Power Automate. Затем он отправляет по электронной почте изображения диаграммы и ее базовой таблицы.
Пример сценария
- Вычисление для получения последних результатов.
- Создание диаграммы.
- Получение изображений диаграмм и таблиц.
- Email образы с помощью Power Automate.
Входные данные
Выходная диаграмма
Email, полученное через поток Power Automate
Решение
Это решение состоит из двух частей:
- Скрипт Office для вычисления и извлечения диаграммы и таблицы Excel
- Поток 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 изображений диаграмм и таблиц
Этот поток запускает скрипт и отправляет по электронной почте возвращенные образы.
Создайте мгновенный облачный поток.
Выберите Вручную активировать поток и нажмите кнопку Создать.
Добавьте новый шаг , использующий соединитель Excel Online (бизнес) с действием Выполнить скрипт . Используйте следующие значения для действия.
- Расположение: OneDrive для бизнеса
- Библиотека документов: OneDrive
- Файл: email-chart-table.xlsx (выбран с помощью выбора файлов)
- Скрипт: получение изображения диаграммы
В этом примере в качестве почтового клиента используется 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>
Сохраните поток и опробуйте его. Нажмите кнопку Тестировать на странице редактора потоков или запустите поток через вкладку Мои потоки . Обязательно разрешите доступ при появлении запроса.
Обучающее видео: извлечение и отправка по электронной почте изображений диаграммы и таблицы
Посмотрите Судхи Рамамурти, пройдите этот пример на YouTube.
Office Scripts