Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом руководстве описано, как использовать сценарий Office для Excel с автоматизированным рабочим процессом Power Automate . Скрипт автоматически запускается каждый раз, когда вы получаете сообщение электронной почты, записывая сведения из сообщения электронной почты в книге Excel. Возможность передавать данные из других приложений в сценарии Office предоставляет вам значительную гибкость и свободу в автоматизированных процессах.
Совет
Если вы не знакомы со сценариями Office, начните с учебника Создание и форматирование таблицы Excel. Если вы не знакомы с Power Automate, начните с руководства по обновлению электронной таблицы из потока Power Automate. Сценарии Office используют TypeScript, и этот учебник предназначен для пользователей с начальным и средним уровнем знаний по JavaScript или TypeScript. Если вы не знакомы с JavaScript, начните с учебника По JavaScript для Mozilla.
Предварительные условия
Для работы с этим руководством вам потребуется доступ к сценариям Office и Power Automate. Если вкладка "Автоматизация" не отображается, ознакомьтесь с разделом Поддержка платформы . В разделе Часто задаваемые вопросы о регистрации в Power Automate содержатся сведения о начале работы с Power Automate.
Подготовка книги
Power Automate не должен использовать относительные ссылки, такие как Workbook.getActiveWorksheet, для доступа к компонентам книги. Поэтому для Power Automate требуются книга и лист с согласованными именами.
Создайте новую книгу с именем MyWorkbook.
Перейдите на вкладку Автоматизация и выберите Создать скрипт.
Замените имеющийся код на следующий и нажмите Запустить. Этот шаг настраивает книгу с согласованными именами листов, таблиц и сводной таблицы.
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")); }
Создание сценария Office
Создайте скрипт, который регистрирует сведения из сообщения электронной почты. Вы хотите отслеживать, в какие дни недели вы получаете больше всего сообщений и сколько уникальных отправителей отправляют это сообщение. Книга содержит таблицу со столбцами Дата, День недели, адрес Email и Тема. На листе также есть сводная таблица, которая содержит сводку по дню недели и Email адрес (это иерархии строк). Количество уникальных тем — это отображаемая объединенная информация (иерархия данных). Скрипт обновляет сводную таблицу после обновления таблицы электронной почты.
В области задач "Редактор кода" выберите Создать сценарий.
Поток, который вы создадите далее в этом руководстве, отправляет сведения о каждом полученном сообщении электронной почты. Сценарий должен обращаться к этим входным данным с помощью параметров в функции
main. Замените сценарий по умолчанию следующим сценарием.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");Параметр
dateReceivedотносится к типуstring. Преобразуйте его в объект ,Dateчтобы можно было легко получить день недели. После этого необходимо сопоставить значение числа дня с более доступной для чтения версией. Добавьте следующий код в конец скрипта перед закрытием}.// 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' });Строка
subjectможет содержать тег ответа RE:. Удалите этот тег из строки, чтобы сообщения электронной почты в том же потоке имели одинаковую тему для таблицы. Добавьте следующий код в конец скрипта перед закрытием}.// 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();Переименуйте сценарий в Запись электронной почты и нажмите Сохранить сценарий.
Теперь сценарий готов для рабочего процесса Power Automate. Он должен выглядеть следующим образом.
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();
}
Создание автоматизированного рабочего процесса с помощью Power Automate
Войдите на сайт Power Automate.
В меню в левой части экрана выберите Создать. Этот выбор приводит к списку способов создания новых рабочих процессов.
В разделе Начать с пустого выберите Автоматизированный рабочий процесс. Этот выбор создает рабочий процесс, активируется событием, например получением сообщения электронной почты.
В появившемся диалоговом окне введите имя рабочего процесса в текстовом поле Имя рабочего процесса. В разделе Выберите триггер потока выберите При поступлении нового сообщения электронной почты в списке параметров. Возможно, вам потребуется выполнить поиск по параметру с помощью поля поиска. По завершении нажмите Создать.
Примечание.
В этом учебном руководстве используется Outlook. Вместо этого можно использовать предпочитаемую службу электронной почты, но некоторые варианты могут отличаться.
В построителе потоков нажмите кнопку + и добавьте действие.
В области задач Добавление действия выполните поиск по запросу "Выполнить скрипт Excel". Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Это действие запускает сценарий из OneDrive в книге. Если вы хотите использовать скрипт, хранящийся в библиотеке SharePoint вашей команды, используйте действие Выполнить скрипт из библиотеки SharePoint .
Может потребоваться войти в учетную запись Microsoft 365. Войдите, чтобы продолжить работу с руководством.
Затем выберите книгу и скрипт для использования на шаге потока. Для работы с руководством используйте книгу, созданную в OneDrive, но вы можете использовать любую книгу на сайте OneDrive или SharePoint. Укажите следующие параметры для действия Выполнить скрипт :
- Расположение: OneDrive для бизнеса
- Библиотека документов: OneDrive
- Файл: MyWorkbook.xlsx (выбран с помощью браузера файлов)
- Сценарий: запись электронной почты
- ScriptParameters/from: From (динамическое содержимое из Outlook)
- ScriptParameters/dateReceived: получено время (динамическое содержимое из Outlook)
- ScriptParameters/subject: Subject (динамическое содержимое из Outlook)
Обратите внимание, что параметры для скрипта отображаются только после выбора скрипта.
Выберите Сохранить.
Теперь рабочий процесс включен. Он автоматически запускает скрипт каждый раз, когда вы получаете сообщение электронной почты через Outlook.
Управление сценарием в Power Automate
На главной странице Power Automate выберите Мои рабочие процессы.
Выберите рабочий процесс. Здесь можно просмотреть журнал запусков. Можно обновить страницу или нажать кнопку обновления Все запуски, чтобы обновить журнал. Поток активируется вскоре после получения сообщения электронной почты. Проверьте рабочий процесс, отправив себе сообщение электронной почты.
Когда поток активирует и успешно запускает скрипт, вы увидите таблицу книги и обновление сводной таблицы.
Устранение неполадок
Одновременное получение нескольких сообщений электронной почты может привести к конфликтам слияния в Excel. Этот риск устраняется путем настройки соединителя электронной почты для выполнения действий только с одним сообщением электронной почты за раз. Чтобы выполнить этот шаг, выполните приведенные ниже действия.
Выберите действие "Сообщение электронной почты поступает", а затем выберите Параметры.
Во всплывающих вариантах выбора Параметры переведите элемент управления Параллелизм в положение Включено. Затем для параметра Степень параллелизма установите значение 1.
Дальнейшие действия
Полное руководство. Отправка еженедельных напоминаний по электронной почте на основе данных электронной таблицы. Из него вы узнаете, как вернуть данные из сценария в поток.
Кроме того, прочтите статью Образец сценария автоматизированных напоминаний о задачах, чтобы узнать, как использовать сценарии Office и Power Automate с адаптивными карточками Teams.