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


Пример сценария Office: автоматические напоминания о задачах

В этом сценарии вы управляете проектом. Лист Excel используется для отслеживания состояния сотрудников каждый месяц. Часто вам нужно напоминать людям о необходимости заполнить их статус, поэтому вы решили автоматизировать этот процесс напоминания.

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

Охваченные навыки сценариев

  • Создание потоков в Power Automate
  • Передача данных в скрипты
  • Возврат данных из скриптов
  • Адаптивные карточки Teams
  • Таблицы

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

В этом сценарии используются Power Automate и Microsoft Teams.

Инструкции по настройке

Скачивание книги

  1. Скачайте пример книги в OneDrive.

  2. Откройте книгу в Excel.

Создание скриптов

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

    /**
     * This script looks for missing status reports in a project management table.
     *
     * @returns An array of Employee objects (containing their names and emails).
     */
    function main(workbook: ExcelScript.Workbook): Employee[] {
      // Get the first worksheet and the first table on that worksheet.
      let sheet = workbook.getFirstWorksheet()
      let table = sheet.getTables()[0];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the data for the whole table.
      let bodyRangeValues = table.getRangeBetweenHeaderAndTotal().getValues();
    
      // Create the array of Employee objects to return.
      let people: Employee[] = [];
    
      // Loop through the table and check each row for completion.
      for (let i = 0; i < bodyRangeValues.length; i++) {
        let row = bodyRangeValues[i];
        if (row[STATUS_REPORT_INDEX] === "") {
          // Save the email to return.
          people.push({ name: row[NAME_INDEX].toString(), email: row[EMAIL_INDEX].toString() });
        }
      }
    
      // Log the array to verify we're getting the right rows.
      console.log(people);
    
      // Return the array of Employees.
      return people;
    }
    
    /**
     * An interface representing an employee.
     * An array of Employees will be returned from the script
     * for the Power Automate flow.
     */
    interface Employee {
      name: string;
      email: string;
    }
    
  2. Сохраните скрипт с именем Get Люди.

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

    /**
     * This script applies the results of a Teams Adaptive Card about
     * a status update to a project management table.
     *
     * @param senderEmail - The email address of the employee updating their status.
     * @param statusReportResponse - The employee's status report.
     */
    function main(workbook: ExcelScript.Workbook,
      senderEmail: string,
      statusReportResponse: string) {
    
      // Get the first worksheet and the first table in that worksheet.
      let sheet = workbook.getFirstWorksheet();
      let table = sheet.getTables()[0];
    
      // Give the column indices names matching their expected content.
      const NAME_INDEX = 0;
      const EMAIL_INDEX = 1;
      const STATUS_REPORT_INDEX = 2;
    
      // Get the range and data for the whole table.
      let bodyRange = table.getRangeBetweenHeaderAndTotal();
      let tableRowCount = bodyRange.getRowCount();
      let bodyRangeValues = bodyRange.getValues();
    
      // Create a flag to denote success.
      let statusAdded = false;
    
      // Loop through the table and check each row for a matching email address.
      for (let i = 0; i < tableRowCount && !statusAdded; i++) {
        let row = bodyRangeValues[i];
    
        // Check if the row's email address matches.
        if (row[EMAIL_INDEX] === senderEmail) {
          // Add the Teams Adaptive Card response to the table.
          bodyRange.getCell(i, STATUS_REPORT_INDEX).setValues([
            [statusReportResponse]
          ]);
          statusAdded = true;
        }
      }
    
      // If successful, log the status update.
      if (statusAdded) {
        console.log(
          `Successfully added status report for ${senderEmail} containing: ${statusReportResponse}`
        );
      }
    }
    
  4. Сохраните скрипт с именем Сохранить состояние.

Создание потока Power Automate

  1. Откройте вкладку Создание Power Automate.

    Совет

    Если вы еще не создавали поток, проверка из нашего учебника Начните использовать скрипты с Power Automate, чтобы изучить основы.

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

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

  4. Поток должен вызвать скрипт Get Люди, чтобы получить все сотрудники с пустыми полями состояния. В построителе потоков нажмите кнопку + и добавьте действие. Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Укажите следующие записи для шага потока:

    • Расположение: OneDrive для бизнеса
    • Библиотека документов: OneDrive
    • Файл: task-reminders.xlsx (выбрано в браузере файлов)
    • Скрипт: получение Люди

    Завершенное действие Выполнить скрипт.

  5. Далее поток должен обработать каждого сотрудника в массиве, возвращенном скриптом. Добавьте адаптивный карта post соединителя Microsoft Teamsи дождитесь действия ответа.

  6. Для отправки адаптивной карточки в качестве сообщения должен быть указан JSON карта. Для создания пользовательских карточек можно использовать Designer адаптивной карточки. Для этого примера используйте следующий код JSON.

    {
      "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
      "type": "AdaptiveCard",
      "version": "1.0",
      "body": [
        {
          "type": "TextBlock",
          "size": "Medium",
          "weight": "Bolder",
          "text": "Update your Status Report"
        },
        {
          "type": "Image",
          "altText": "",
          "url": "https://i.imgur.com/f5RcuF3.png"
        },
        {
          "type": "TextBlock",
          "text": "This is a reminder to update your status report for this month's review. You can do so right here in this card, or by adding it directly to the spreadsheet.",
          "wrap": true
        },
        {
          "type": "Input.Text",
          "placeholder": "My status report for this month is...",
          "id": "response",
          "isMultiline": true
        }
      ],
      "actions": [
        {
          "type": "Action.Submit",
          "title": "Submit",
          "id": "submit"
        }
      ]
    }
    
  7. В поле Получатель добавьте сообщение электронной почты из динамического содержимого (выбранный элемент будет иметь логотип Excel). Добавление сообщения электронной почты приводит к тому, что шаг потока будет окружен элементом Для каждого блока. Это означает, что power Automate выполнит итерации массива.

  8. Заполните остальные поля следующим образом:

    • Опубликовать как: Бот потока
    • Публикация в: Чат с ботом Flow
    • Сообщение об обновлении. Благодарим за отправку отчета о состоянии. Ваш ответ успешно добавлен в электронную таблицу.

    Поток Power Automate, показывающий завершенное адаптивное действие карта.

  9. В блоке For each (Для каждого блока) в разделе Post adaptive карта и ожидании действия ответа добавьте новое действие. Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Укажите следующие записи для шага потока:

    • Расположение: OneDrive для бизнеса
    • Библиотека документов: OneDrive
    • Файл: task-reminders.xlsx (выбрано в браузере файлов)
    • Скрипт: состояние сохранения
    • senderEmail: электронная почта (динамическое содержимое из Excel)
    • statusReportResponse: response (динамическое содержимое из Teams)

    Поток Power Automate, показывающий шаг применения к каждому.

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

    Схема завершенного потока, на которых показаны два шага, ведущих к Элементу управления Для каждого элемента управления, и два шага внутри Элемента управления For each.

Выполнение потока

Чтобы протестировать поток, убедитесь, что в строках таблицы с пустым состоянием используется адрес электронной почты, привязанный к учетной записи Teams (при тестировании, скорее всего, следует использовать собственный адрес электронной почты). Нажмите кнопку Тестировать на странице редактора потоков или запустите поток через вкладку Мои потоки . Обязательно разрешите доступ при появлении запроса.

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

Перед запуском потока

Лист с отчетом о состоянии, содержащим одну недостающую запись о состоянии.

Получение адаптивной карточки

Адаптивная карточка в Teams с просьбой об обновлении состояния у сотрудника.

После выполнения потока

Лист с отчетом о состоянии с заполненной записью состояния.