Руководство. Автоматическое сохранение содержимого из сообщений электронной почты в книге

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

Совет

Если вы не знакомы со скриптами Office, рекомендуем начать с руководства по созданию и форматированию таблицы Excel. Если вы не знакомы с Power Automate, рекомендуется начать с руководства по обновлению электронной таблицы из потока Power Automate. Сценарии Office используют TypeScript, и этот учебник предназначен для пользователей с начальным и средним уровнем знаний по JavaScript или TypeScript. Если вы впервые работаете с JavaScript, рекомендуем начать с учебника Mozilla по JavaScript.

Предварительные условия

Для работы с этим руководством вам потребуется доступ к сценариям Office и Power Automate. Если вкладка "Автоматизация" не отображается, ознакомьтесь с разделом Поддержка платформы . В разделе Часто задаваемые вопросы о регистрации в Power Automate содержатся сведения о начале работы с Power Automate.

Подготовка книги

Power Automate не должен использовать относительные ссылки, такие как Workbook.getActiveWorksheet, для доступа к компонентам книги. Поэтому для Power Automate требуются книга и лист с согласованными именами.

  1. Создайте новую книгу с именем MyWorkbook.

  2. Перейдите на вкладку Автоматизация и выберите Создать скрипт.

  3. Замените имеющийся код на следующий и нажмите Запустить. При том будет создана книга с нужными именами листа, таблицы и сводной таблицы.

    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 адрес (это иерархии строк). Количество уникальных тем — это отображаемая объединенная информация (иерархия данных). Скрипт обновит сводную таблицу после обновления таблицы электронной почты.

  1. В области задач "Редактор кода" выберите Создать сценарий.

  2. Поток, который вы создадите позже в этом руководстве, отправляет сведения о каждом полученном сообщении электронной почты. Сценарий должен обращаться к этим входным данным с помощью параметров в функции main. Замените сценарий по умолчанию следующим сценарием.

    function main(
      workbook: ExcelScript.Workbook,
      from: string,
      dateReceived: string,
      subject: string) {
    
    }
    
  3. Этому сценарию требуется доступ к таблице книги и к сводной таблице. Добавьте следующий код в текст скрипта после открытия {.

    // 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");
    
  4. Параметр 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' });
    
  5. Строка 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: ", "");
    
  6. Теперь, когда данные электронной почты отформатированы, добавьте строку в таблицу электронной почты. Добавьте следующий код в конец скрипта перед закрытием }.

    // Add the parsed text to the table.
    table.addRow(-1, [dateReceived, dayName, from, subjectText]);
    
  7. Наконец, убедитесь, что сводная таблица обновлена. Добавьте следующий код в конце сценария перед закрывающим символом }

    // Refresh the PivotTable to include the new row.
    pivotTable.refresh();
    
  8. Переименуйте сценарий в Запись электронной почты и нажмите Сохранить сценарий.

Теперь сценарий готов для рабочего процесса 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

  1. Войдите на сайт Power Automate.

  2. В меню в левой части экрана выберите Создать. При этом откроется список способов создания новых рабочих процессов.

    Кнопка

  3. В разделе Начать с пустого выберите Автоматизированный рабочий процесс. В этом случае создается рабочий процесс, запускаемый каким-либо событием, например получением сообщения электронной почты.

    Параметр

  4. В появившемся диалоговом окне введите имя рабочего процесса в текстовом поле Имя рабочего процесса. В разделе Выберите триггер потока выберите При поступлении нового сообщения электронной почты в списке параметров. Может потребоваться найти этот параметр с помощью поля поиска. По завершении нажмите Создать.

    Часть потока Power Automate с указанием параметров

    Примечание.

    В этом учебном руководстве используется Outlook. Можно использовать любую предпочитаемую вами службу электронной почты, хотя в этом случае некоторые параметры могут отличаться.

  5. В построителе потоков нажмите кнопку + и добавьте действие.

  6. В области задач Добавление действия выполните поиск по запросу "Выполнить скрипт Excel". Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Это действие запускает сценарий из OneDrive в книге. Если вы хотите использовать скрипт, хранящийся в библиотеке SharePoint вашей команды, следует использовать действие Запуск скрипта из библиотеки SharePoint .

    Область задач выбора действий, показывающая действия для соединителя Excel Online (бизнес). Выделено действие Выполнить скрипт.

  7. Вам может быть предложено войти в учетную запись Microsoft 365. Сделайте это, чтобы продолжить работу с руководством.

  8. Затем выберите книгу и сценарий для использования на следующем шаге. В этом учебнике вы будете использовать книгу, созданную в OneDrive, но вы можете воспользоваться любой книгой в OneDrive или на сайте SharePoint. Укажите следующие параметры для действия Выполнить скрипт :

    • Расположение: OneDrive для бизнеса
    • Библиотека документов: OneDrive
    • Файл: MyWorkbook.xlsx (выбран с помощью браузера файлов)
    • Сценарий: запись электронной почты
    • ScriptParameters/from: From (динамическое содержимое из Outlook)
    • ScriptParameters/dateReceived: получено время (динамическое содержимое из Outlook)
    • ScriptParameters/subject: Subject (динамическое содержимое из Outlook)

    Обратите внимание, что эти параметры сценария будут отображаться только после выбора сценария.

    Действие запуска сценария Power Automate с параметрами, которые отображаются после выбора сценария.

  9. Нажмите кнопку Сохранить.

    Кнопка Сохранить в Power Automate.

Теперь рабочий процесс включен. Он будет автоматически выполнять сценарий каждый раз при получении сообщения электронной почты через Outlook.

Управление сценарием в Power Automate

  1. На главной странице Power Automate выберите Мои рабочие процессы.

    Кнопка

  2. Выберите рабочий процесс. Здесь можно просмотреть журнал запусков. Можно обновить страницу или нажать кнопку обновления Все запуски, чтобы обновить журнал. Рабочий процесс запустится вскоре после получения сообщения электронной почты. Проверьте рабочий процесс, отправив себе сообщение электронной почты.

При срабатывании рабочего процесса и успешном выполнении сценария должна обновляться таблица книги и сводная таблица.

Лист с таблицей электронной почты после трех запусков потока.

Лист со сводной таблицей после трех запусков потока.

Устранение неполадок

Одновременное получение нескольких сообщений электронной почты может привести к конфликтам слияния в Excel. Этот риск устраняется путем настройки соединителя электронной почты для выполнения действий только с одним сообщением электронной почты за раз. Выполните следующие действия:

  1. Выберите действие "Сообщение электронной почты поступает", а затем выберите Параметры.

  2. Во всплывающих вариантах выбора Параметры переведите элемент управления Параллелизм в положение Включено. Затем для параметра Степень параллелизма установите значение 1.

    Параметры параллелизма в меню параметров.

Дальнейшие действия

Полное руководство. Отправка еженедельных напоминаний по электронной почте на основе данных электронной таблицы. Из него вы узнаете, как вернуть данные из сценария в поток.

Кроме того, прочтите статью Образец сценария автоматизированных напоминаний о задачах, чтобы узнать, как использовать сценарии Office и Power Automate с адаптивными карточками Teams.