Пример сценария Office: автоматические напоминания о задачах
В этом сценарии вы управляете проектом. Лист Excel используется для отслеживания состояния сотрудников каждый месяц. Часто вам нужно напоминать людям о необходимости заполнить их статус, поэтому вы решили автоматизировать этот процесс напоминания.
Вы создадите поток Power Automate, чтобы отправлять сообщения людям с отсутствующими полями состояния и применять их ответы к электронной таблице. Для этого вы разработаете пару скриптов для обработки работы с книгой. Первый скрипт получает список людей с пустыми состояниями, а второй скрипт добавляет строку состояния в правую строку. Вы также будете использовать адаптивные карточки Teams , чтобы сотрудники вводили свое состояние непосредственно из уведомления.
Охваченные навыки сценариев
- Создание потоков в Power Automate
- Передача данных в скрипты
- Возврат данных из скриптов
- Адаптивные карточки Teams
- Таблицы
Предварительные требования
В этом сценарии используются Power Automate и Microsoft Teams.
Инструкции по настройке
Скачивание книги
Скачайте пример книги в OneDrive.
Откройте книгу в Excel.
Создание скриптов
Во-первых, нам нужен сценарий, чтобы получить все сотрудники с отчетами о состоянии, отсутствующими в электронной таблице. На вкладке Автоматизация выберите Создать скрипт и вставьте следующий скрипт в редактор.
/** * 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; }
Сохраните скрипт с именем Get Люди.
Затем нам нужен второй сценарий для обработки карточек отчетов о состоянии и вставки новых сведений в электронную таблицу. В области задач Редактор кода выберите Создать скрипт и вставьте следующий скрипт в редактор.
/** * 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}` ); } }
Сохраните скрипт с именем Сохранить состояние.
Создание потока Power Automate
Откройте вкладку Создание Power Automate.
Совет
Если вы еще не создавали поток, проверка из нашего учебника Начните использовать скрипты с Power Automate, чтобы изучить основы.
Создайте мгновенный облачный поток.
Выберите Вручную активировать поток из параметров и нажмите кнопку Создать.
Поток должен вызвать скрипт Get Люди, чтобы получить все сотрудники с пустыми полями состояния. В построителе потоков нажмите кнопку + и добавьте действие. Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Укажите следующие записи для шага потока:
- Расположение: OneDrive для бизнеса
- Библиотека документов: OneDrive
- Файл: task-reminders.xlsx (выбрано в браузере файлов)
- Скрипт: получение Люди
Далее поток должен обработать каждого сотрудника в массиве, возвращенном скриптом. Добавьте адаптивный карта post соединителя Microsoft Teamsи дождитесь действия ответа.
Для отправки адаптивной карточки в качестве сообщения должен быть указан 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" } ] }
В поле Получатель добавьте сообщение электронной почты из динамического содержимого (выбранный элемент будет иметь логотип Excel). Добавление сообщения электронной почты приводит к тому, что шаг потока будет окружен элементом Для каждого блока. Это означает, что power Automate выполнит итерации массива.
Заполните остальные поля следующим образом:
- Опубликовать как: Бот потока
- Публикация в: Чат с ботом Flow
- Сообщение об обновлении. Благодарим за отправку отчета о состоянии. Ваш ответ успешно добавлен в электронную таблицу.
В блоке For each (Для каждого блока) в разделе Post adaptive карта и ожидании действия ответа добавьте новое действие. Выберите действие Выполнить скрипт соединителя Excel Online (бизнес). Укажите следующие записи для шага потока:
- Расположение: OneDrive для бизнеса
- Библиотека документов: OneDrive
- Файл: task-reminders.xlsx (выбрано в браузере файлов)
- Скрипт: состояние сохранения
- senderEmail: электронная почта (динамическое содержимое из Excel)
- statusReportResponse: response (динамическое содержимое из Teams)
Сохраните поток. Конструктор потоков должен выглядеть так, как показано на следующем рисунке.
Выполнение потока
Чтобы протестировать поток, убедитесь, что в строках таблицы с пустым состоянием используется адрес электронной почты, привязанный к учетной записи Teams (при тестировании, скорее всего, следует использовать собственный адрес электронной почты). Нажмите кнопку Тестировать на странице редактора потоков или запустите поток через вкладку Мои потоки . Обязательно разрешите доступ при появлении запроса.
Вы должны получить адаптивную карточку от Power Automate через Teams. После заполнения поля состояния в карта поток продолжится и обновит электронную таблицу с указанным состоянием.
Перед запуском потока
Получение адаптивной карточки
После выполнения потока
Office Scripts