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


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

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

Совет

Если вы не знакомы со скриптами Office, рекомендуем начать с руководства по созданию и форматированию таблицы Excel.

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

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

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

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

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

  1. Загрузите книгу on-call-rotation.xlsx в OneDrive.

  2. Откройте on-call-rotation.xlsx в Excel.

  3. Добавьте в таблицу строку со своим именем, адресом электронной почты и датами начала и окончания, которые перекрываются с текущей датой.

    Важно!

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

    Таблица, содержащая расписание поочередных дежурств.

Создание сценария Office

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

  2. Назовите сценарий Получение дежурного.

  3. Сейчас у вас должен быть пустой сценарий. Вам нужен скрипт, который получает адрес электронной почты из электронной таблицы. Измените функцию main, чтобы вернуть строку наподобие этой:

    function main(workbook: ExcelScript.Workbook) : string {
    }
    
  4. Далее необходимо получить все данные из таблицы. Это позволяет скрипту просмотреть каждую строку. Добавьте следующий код в функцию main.

    // Get the H1 worksheet.
    let worksheet = workbook.getWorksheet("H1");
    
    // Get the first (and only) table in the worksheet.
    let table = worksheet.getTables()[0];
    
    // Get the data from the table.
    let tableValues = table.getRangeBetweenHeaderAndTotal().getValues();
    
  5. Даты в таблице хранятся в виде порядковых номеров в Excel. Чтобы сравнить эти даты, необходимо преобразовать их в даты JavaScript. Добавьте следующую вспомогаемую функцию main вне функции.

    // Convert the Excel date to a JavaScript Date object.
    function convertDate(excelDateValue: number) {
        let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000));
        return javaScriptDate;
    }
    
  6. Теперь вам нужно выяснить, какой человек находится на вызове прямо сейчас. В строке с его именем дата начала будет предшествовать текущей дате, а дата окончания — следовать за ней. Сценарий предполагает, что одновременно на вызове находится только один человек. Скрипты могут возвращать массивы для обработки нескольких значений, но вы можете вернуть первый соответствующий адрес электронной почты для этого руководства. Добавьте ниже указанный код в конец функции main.

    // Look for the first row where today's date is between the row's start and end dates.
    let currentDate = new Date();
    for (let row = 0; row < tableValues.length; row++) {
        let startDate = convertDate(tableValues[row][2] as number);
        let endDate = convertDate(tableValues[row][3] as number);
        if (startDate <= currentDate && endDate >= currentDate) {
            // Return the first matching email address.
            return tableValues[row][1].toString();
        }
    }
    
  7. Окончательный вариант сценария должен выглядеть так:

    function main(workbook: ExcelScript.Workbook) : string {
        // Get the H1 worksheet.
        let worksheet = workbook.getWorksheet("H1");
    
        // Get the first (and only) table in the worksheet.
        let table = worksheet.getTables()[0];
    
        // Get the data from the table.
        let tableValues = table.getRangeBetweenHeaderAndTotal().getValues();
    
        // Look for the first row where today's date is between the row's start and end dates.
        let currentDate = new Date();
        for (let row = 0; row < tableValues.length; row++) {
            let startDate = convertDate(tableValues[row][2] as number);
            let endDate = convertDate(tableValues[row][3] as number);
            if (startDate <= currentDate && endDate >= currentDate) {
                // Return the first matching email address.
                return tableValues[row][1].toString();
            }
        }
    }
    
    // Convert the Excel date to a JavaScript Date object.
    function convertDate(excelDateValue: number) {
        let javaScriptDate = new Date(Math.round((excelDateValue - 25569) * 86400 * 1000));
        return javaScriptDate;
    }
    

Создание автоматизированного рабочего процесса с помощью Power Automate

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

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

    Кнопка

  3. В разделе Начать с пустого выберите Запланированный облачный поток.

    Кнопка

  4. Затем задайте расписание для этого потока. Электронная таблица имеет новое назначение по вызову, начиная с каждого понедельника в первой половине 2024 года. Настройте поток для запуска в первую очередь понедельника утром. Используйте приведенные ниже параметры, чтобы настроить запуск потока каждый понедельник.

    • Имя потока: Уведомление дежурного
    • Начало: 27.11.23 в 1:00
    • Частота повтора: 1 неделя
    • В такие дни: Пн

    Диалоговое окно Power Automate

  5. Нажмите Создать.

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

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

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

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

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

    • Расположение: OneDrive для бизнеса
    • Библиотека документов: OneDrive
    • Файл: on-call-rotation.xlsx (выбран с помощью браузера файлов)
    • Сценарий: Получение дежурного

    Параметры соединителя для запуска сценария в Power Automate

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

  11. Завершите поток, отправив письмо с напоминанием. В области задач Добавление действия выполните поиск по запросу "отправить сообщение электронной почты". Выберите действие отправить сообщение электронной почты (V2) соединителя Outlook Office 365.

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

    Примечание.

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

  12. Для параметра To выберите текстовое поле и выберите Ввести пользовательское значение. Используйте динамический элемент управления содержимым, чтобы добавить адрес электронной почты, возвращенный скриптом. Он будет помечен как результат и значком Excel. Можно использовать любую тему и основной текст.

    Параметры соединителя Outlook Power Automate для отправки сообщения электронной почты. В их число входят имя файла для отправки, тема и тело сообщения электронной почты, а также дополнительные параметры.

  13. Нажмите Сохранить.

Тестирование сценария в Power Automate

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

Кнопка

Совет

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

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

Посетите страницу Запуск сценариев Office с помощью Power Automate для получения дополнительных сведений о подключениях сценариев Office с помощью Power Automate.

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