Вопрос или проблема
Я создаю запланированный облачный поток в Power Automate, который должен выполняться только в последний понедельник каждого месяца. Как я могу проверить, является ли текущая дата последним понедельником текущего месяца, используя выражения Power Automate?
Если поток запускается сегодня (30 сентября 2024 года), триггер должен быть истинным, и все действия будут выполнены.
Ответ или решение
Чтобы определить, является ли текущая дата последним понедельником текущего месяца в Power Automate, вы можете использовать выражения и условия. Вот шаги, которые помогут вам настроить этот процесс:
-
Создайте облачный поток: Начните с создания нового запланированного облачного потока в Power Automate, который будет запускаться, например, каждый понедельник.
-
Определите текущую дату и день: В поле "Текущая дата и время" используйте встроенное выражение
utcNow()
, чтобы получить текущую дату. -
Извлеките информацию о дате: С помощью выражений Power Automate извлеките год, месяц, день и день недели из текущей даты. Например:
formatDateTime(utcNow(), 'yyyy')
для получения текущего года.formatDateTime(utcNow(), 'MM')
для получения текущего месяца.formatDateTime(utcNow(), 'dd')
для получения текущего числа.dayOfWeek(utcNow())
для получения дня недели (0 = воскресенье, 1 = понедельник и так далее).
-
Проверьте, является ли сегодня понедельником: Используйте условие, чтобы проверить, равен ли день недели 1 (понедельник).
-
Определите, является ли сегодня последним понедельником:
- Найдите последний день текущего месяца, используя выражение:
endOfMonth(utcNow())
- Извлеките день недели для последнего дня месяца:
dayOfWeek(endOfMonth(utcNow()))
- На основе полученного значения определите, сколько понедельников есть до последнего дня месяца.
- Если последний день месяца — это понедельник, используйте условие, чтобы проверить, является ли текущая дата последним понедельником.
- Если нет, вычтите число, чтобы проверить, остается ли очередной понедельник в месяце.
- Найдите последний день текущего месяца, используя выражение:
-
Пример условия в Power Automate:
Вы можете создать условие, используя следующее выражение:@and(equals(dayOfWeek(utcNow()), 1), equals(formatDateTime(utcNow(),'dd'), sub(int(formatDateTime(endOfMonth(utcNow()), 'dd')), if(equals(dayOfWeek(endOfMonth(utcNow())), 1), 0, mod(sub(int(formatDateTime(endOfMonth(utcNow()), 'dd')), int(formatDateTime(endOfMonth(utcNow()), 'dd'))), 7))))
-
Сохраните и протестируйте ваш поток: Убедитесь, что ваш поток работает корректно и запускается только в те понедельники, которые являются последними в месяце.
Следуя этим шагам, вы сможете корректно настроить поток, который будет выполняться только в последний понедельник каждого месяца. Удачи!