Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется 30 готовых шаблонов выражений для распространенных сценариев в Power Automate облачных потоках. Вы можете копировать, адаптировать и использовать эти шаблоны в потоках.
Замечание
Эти выражения работают во всех Power Automate уровнях лицензий облачного потока. Найдите полную ссылку на функцию в функциях выражений рабочего процесса.
Текстовые операции
1. Преобразование в верхний или нижний регистр
Сценарий. Нормализация входных данных пользователей перед сравнением или хранилищем.
Выражение: toUpper(variables('input')) или toLower(variables('input'))
Пример: toLower('John.Smith@Contoso.COM') возвращается john.smith@contoso.com
Это важно
toUpper() учитывает регистр при сравнении. Если вы используете toUpper(A) = B, убедитесь, что применяете его к обеим сторонам.
toUpper(A) = B завершается ошибкой, если B является смешанным случаем.
2. Извлечение подстроки (слева, справа, середине)
Сценарий. Извлечение определенной части из текстового значения. Получите первые N-символы, последние N или диапазон от середины.
Выражение:
- Левой:
substring(variables('text'), 0, 5) - Правильно:
substring(variables('text'), sub(length(variables('text')), 5), 5) - Классическая:
substring(variables('text'), 3, 4)
Пример: substring('Invoice-2026-0042', 8, 4) возвращается 2026
Подсказка
Второй параметр — начальный индекс (на основе 0), третий — длина, а не конечный индекс.
substring('ABCDE', 1, 3) возвращает BCD, а не BC.
3. Замена текста
Сценарий: очистка или преобразование текстовых значений. Удаление символов, разделителей буферов, исправление форматирования.
Выражение: replace(variables('input'), 'old', 'new')
Пример: replace('2026/03/18', '/', '-') возвращается 2026-03-18
Замечание
replace() чувствителен к регистру.
replace('Hello', 'hello', 'Hi') возвращает Hello значение без изменений. При необходимости преобразуйте его в распространенный случай.
4. Разделение строки на массив
Сценарий. Разбиение разделенного разделителями значения (CSV, разделенных точкой с запятой) на отдельные элементы для циклического цикла.
Выражение: split(variables('input'), ',')
Пример: split('alice@contoso.com,bob@contoso.com,carol@contoso.com', ',') возвращается ["alice@contoso.com","bob@contoso.com","carol@contoso.com"]
Подсказка
Пробелы после сохранения разделителя.
split('a, b, c', ',') возвращается ["a"," b"," c"] с ведущими пробелами. Используйте trim() каждый элемент в действии Select после этого.
5. Объединение с разрывами строк (для сообщений электронной почты)
Сценарий. Создание многострочный текст сообщения для уведомлений электронной почты или Teams.
Выражение: concat('Line 1', decodeUriComponent('%0A'), 'Line 2')
Example: используйте decodeUriComponent('%0A') для новой линии или decodeUriComponent('%0D%0A') для разрывов строк в стиле Windows.
Это важно
Использование \n непосредственно в выражениях не создает разрыв строки. Он выводит литеральные символы \n. Всегда используйте подход или используйтеdecodeUriComponent, если выходные <br> данные — HTML.
6. Проверьте, содержит ли строка текст
Сценарий: маршрутизация потока на основе строки темы, текста электронной почты или поля, содержащего ключевое слово.
Выражение: contains(toLower(triggerBody()?['subject']), 'urgent')
Пример: contains('Project Alpha Review', 'Alpha') возвращается true
Замечание
contains() чувствителен к регистру. Всегда обертывание как сена, так и иглы в toLower() случае нечувствительного сопоставления: contains(toLower(value), toLower(search))
Дата и время
7. Получение текущей даты и времени в определенном формате
Сценарий: метка имени файла, записи журнала или электронной почты с текущей датой и временем.
Выражение: formatDateTime(utcNow(), 'yyyy-MM-dd HH:mm')
Пример: возвращает 2026-03-18 14:30 (UTC). Используется convertTimeZone() для локального времени.
Подсказка
utcNow() всегда в формате UTC. Для локального времени цепочка с convertTimeZone(utcNow(), 'UTC', 'Eastern Standard Time', 'yyyy-MM-dd HH:mm').
8. Добавление или вычитание дней с даты
Сценарий: вычислить дату выполнения, срок действия или дату напоминания относительно сегодняшнего дня.
Выражение: addDays(utcNow(), 7) или addDays(utcNow(), -30)
Пример. Если сегодня есть 2026-03-18, addDays(utcNow(), 7) возвращается 2026-03-25T...Z
Замечание
addDays() также принимает дробные значения, но addHours() или addMinutes() очищаются для смещения в поддневный день. Не используйте addDays(utcNow(), 0.5) , если вы означаете addHours(utcNow(), 12).
9. Преобразование строки в дату (синтаксический анализ)
Сценарий: текстовое поле содержит дату, например 03/18/2026 , и ее необходимо использовать в функциях даты.
Выражение: parseDateTime(variables('dateString'), 'en-US')
Пример:parseDateTime('03/18/2026', 'en-US') возвращает правильное значение datetime.
Это важно
Без параметра языкового стандарта синтаксический анализ зависит от региональных параметров потока и может переключать месяц/день. Всегда указывайте языковой стандарт явным образом, чтобы избежать 03/04/2026 интерпретации как 3 апреля и 4 марта.
10. Получение дня недели
Сценарий: выполните другую логику в выходные дни и выходные дни или создайте "отчет в понедельник".
Выражение: dayOfWeek(utcNow())
Пример: возвращается 0 в воскресенье, 1 в понедельник, ..., 6 в субботу.
Подсказка
Воскресенье , 0а не 7. Используется or(equals(dayOfWeek(...), 0), equals(dayOfWeek(...), 6)) для проверок в выходные дни. Условие, как dayOfWeek(utcNow()) > 5 поймает субботу, но пропустит воскресенье.
11. Вычисление разницы между двумя датами
Сценарий. Определите, сколько дней истекло между датой запроса и датой завершения.
Выражение: div(sub(ticks(variables('endDate')), ticks(variables('startDate'))), 864000000000)
Пример: если начальный и конечный 2026-03-012026-03-18— , возвращается 17.
Замечание
Встроенная функция отсутствует dateDiff() . Необходимо использовать подход тиков. Делитель 864000000000 преобразует галочки в дни. В течение нескольких часов используйте 36000000000; в минутах.600000000
12. Формат даты отображения
Сценарий. Преобразование значения даты и времени в удобочитаемый пользователем формат для сообщений электронной почты или отчетов.
Выражение: formatDateTime(variables('myDate'), 'MMMM dd, yyyy') или formatDateTime(variables('myDate'), 'MM/dd/yyyy')
Пример: formatDateTime('2026-03-18T14:30:00Z', 'MMMM dd, yyyy') возвращается March 18, 2026
Это важно
MM составляет месяцы, mm составляет минуты.
formatDateTime(value, 'mm/DD/yyyy')
30/18/2026 производит (минуты и день) вместо 03/18/2026. Используйте dd (строчные буквы) в течение дня месяца.
Массивы и коллекции
13. Фильтрация массива по условию
Сценарий. Получение только элементов из массива, соответствующего конкретному критерию.
Выражение. Использование действия массива фильтра с: @item()?['Status'] равно 'Active'
Пример: возврат входных данных [{Name:'A', Status:'Active'}, {Name:'B', Status:'Closed'}][{Name:'A', Status:'Active'}]
Замечание
Не удается использовать встроенное выражение фильтра стилей where. Используйте действие "Фильтр массива" (а не выражение). Для фильтрации на основе выражений используйте @equals(item()?['Status'], 'Active') в расширенном режиме массива фильтров.
14. Получение первого или последнего элемента из массива
Сценарий: получение последней записи или первого совпадения из списка.
Выражение: first(variables('myArray')) или last(variables('myArray'))
Example: first(body('Get_items')?['value']) возвращает первый элемент из запроса SharePoint.
Подсказка
first() в пустом массиве возвращается null, а не ошибка. Всегда используйте флажок NULL: if(empty(variables('myArray')), null, first(variables('myArray')))
15. Подсчет элементов в массиве
Сценарий. Проверьте, сколько результатов возвращен запрос или убедитесь, что список содержит достаточно элементов.
Выражение: length(variables('myArray'))
Example: length(body('Get_items')?['value']) возвращает количество элементов из запроса список SharePoint.
Замечание
length() работает как на массивах, так и в строках.
length('hello') возвращает 5 (число символов). Убедитесь, что вы передаете массив, а не строку, которая выглядит как массив.
16. Создание строки, разделенной запятыми, из массива (соединения)
Сценарий. Преобразование списка имен, сообщений электронной почты или идентификаторов в одну строку с разделителями для отображения или вызова API.
Выражение: join(variables('myArray'), ', ')
Пример: join(createArray('Alice', 'Bob', 'Carol'), '; ') возвращается Alice; Bob; Carol
Подсказка
join() работает над массивами строк. Если массив содержит объекты, сначала используйте действие Select , чтобы извлечь нужное поле, а затем присоединиться к результату.
17. Проверьте, содержит ли массив значение
Сценарий. Определите, существует ли определенный элемент в списке перед продолжением.
Выражение: contains(variables('myArray'), 'searchValue')
Пример: contains(createArray('North', 'South', 'East', 'West'), 'East') возвращается true
Замечание
Для массивов объектов contains() проверяет наличие всего объекта, а не значения свойства. Чтобы проверить, имеет ли какой-либо объект соответствующее свойство, используйте действие массива фильтров, а затем проверьте length() результат.
JSON и объекты
18. Анализ строки JSON
Сценарий: действие HTTP или пользовательский соединитель возвращает строку JSON, с которыми необходимо работать как структурированные данные.
Выражение: json(body('HTTP'))
Пример:json('{"name":"Alice","age":30}') возвращает объект, к которым можно получить доступ?['name'].
Это важно
Не дважды синтаксический анализ. Если действие уже возвращает синтаксический анализ JSON (большинство действий соединителя делают), оболочка снова json() приводит к ошибке. Используйте json() только необработанные строковые ответы, а не выходные данные действий, которые уже являются объектами.
19. Получение вложенного свойства из JSON
Сценарий. Доступ к значению в ответе JSON, например response.data.items[0].name.
Выражение: body('HTTP')?['data']?['items']?[0]?['name']
Пример: для {"data":{"items":[{"name":"Widget"}]}}возвращаемого Widgetзначения.
Это важно
Не забывайте (безопасная ? навигация).
body('HTTP')['data']['items'] Вызывает ошибку, если какой-либо уровень имеет значение NULL. Всегда используется ?['key'] для безопасного обхода: каждый ? возвращает значение NULL вместо сбоя, если родительский элемент отсутствует.
20. Создание объекта JSON из значений
Сценарий. Создание текста запроса для действия HTTP из переменных потока и динамического содержимого.
Выражение: json(concat('{"name":"', variables('name'), '","status":"', variables('status'), '"}'))
Пример: с именем=Alice и status=Active, возвращается {"name":"Alice","status":"Active"}.
Подсказка
Если любая переменная содержит кавычки или специальные символы, json будет неправильно сформирован. Для надежной конструкции используйте действие Compose или createObject('name', variables('name'), 'status', variables('status')) создайте его непосредственно в действии Compose.
21. Преобразование объекта в строку
Сценарий: ведение журнала объекта JSON в текстовое поле или передача структурированных данных в виде строкового параметра.
Выражение: string(variables('myObject'))
Пример:string(json('{"a":1}')) возвращается {"a":1} в виде строки.
Замечание
string() в массиве или объекте создается компактный КОД JSON (без красивой печати). Встроенные prettyPrint()не существуют. Примите компактный текст JSON или текст в формате сборки вручную.
22. Безопасно обрабатывать значения NULL или пустые значения
Сценарий. Предотвращение ошибок, когда поле может быть пустым, пустым или отсутствующим полностью.
Выражение: coalesce(triggerBody()?['optionalField'], 'default value')
Пример: если optionalField значение NULL, возвращается 'default value'. Если он имеет значение, возвращает это значение.
Это важно
coalesce() обрабатывает только пустые nullстроки. Для пустых строк в сочетании с условием: if(empty(triggerBody()?['field']), 'default', triggerBody()?['field']) Функция empty() возвращает значение true как для пустой, так и для пустой строки ''.
Числа и математика
23. Округление числа
Сценарий. Отображение процентного или денежного значения с фиксированным числом десятичных разрядов.
Выражение: formatNumber(variables('value'), 'N2') (для отображения) или div(mul(variables('value'), 100), 100) (для усечения)
Пример:formatNumber(3.14159, 'N2') возвращается 3.14 в виде строки.
Замечание
formatNumber() возвращает строку, а не число. Если вам нужно сделать дополнительную математику по округленном значению, выполните его анализ обратно: float(formatNumber(variables('value'), 'N2'))
24. Преобразование строки в число (и обратно)
Сценарий: форма или электронная почта дает вам число в виде текста, и с ним нужно выполнять математические вычисления.
Выражение: int(variables('textNumber')) или float(variables('textNumber'))string(variables('numericValue'))
Пример: int('42') возвращается 42.
float('3.14') возвращает 3.14.
string(42) возвращает '42'.
Это важно
int() в десятичной строке возникает ошибка; Он не усечен. Если переменная может содержать десятичное значение, используйте float() сначала: int(float(variables('input'))) При таких int('3.14')константных значениях ошибка перехватится во время сохранения (InvalidTemplate), а не во время выполнения.
25. Вычисление процента
Сценарий: отображение доли одного значения другого (например, скорость завершения, использование).
Выражение: mul(div(float(variables('part')), float(variables('total'))), 100)
Пример: с частью=75 и total=200, возвращается 37.5.
Это важно
Усечение целочисленного деления.
div(75, 200) возвращается 0 , так как оба являются целыми числами. Всегда преобразовывается в float first: div(float(75), float(200)) возвращается 0.375.
Условные условия и логика
26. If/then/else in an expression
Сценарий. Возвращает разные значения на основе условия, не добавляя действие Условия в поток.
Выражение: if(equals(variables('status'), 'Approved'), 'Proceed', 'Wait')
Пример. Если состояние равно Approved, возвращается Proceed. В противном случае возвращает значение Wait.
Замечание
Функция if() не поддерживает >< операторы напрямую. Используйте вспомогательные функции: if(greater(variables('count'), 10), 'Over', 'Under') Доступные сравнения: equals(), , greater()less(), greaterOrEquals(). lessOrEquals()
27. Объединение (первое непустое значение)
Сценарий. Попробуйте использовать несколько полей и используйте первый, имеющий значение, например предпочтительное имя, отображаемое имя, электронная почта.
Выражение: coalesce(triggerBody()?['preferredName'], triggerBody()?['displayName'], triggerBody()?['email'], 'Unknown')
Пример. Если предпочтительное имя имеет значение NULL и displayName 'Alice', возвращается Alice.
Подсказка
coalesce() пропускает null , но не пустые ''строки. Пустая строка — допустимое значение, отличное от NULL. Объедините с вспомогательным средством, если пустые строки также должны пропускаться: coalesce(if(empty(A), null, A), if(empty(B), null, B), 'default')
28. Проверьте, является ли значение null или пустым
Сценарий. Убедитесь, что необходимое поле имеет полезное значение перед обработкой.
Выражение: empty(variables('input'))
Пример: empty('') возвращается true.
empty(null) возвращает true.
empty('hello') возвращает false.
Это важно
empty() не работает над числами.
empty(0) вызывает ошибку. Для чисел сначала используйте equals(variables('num'), null) или проверьте тип.
29. Сравнение дат (дата A после даты B?)
Сценарий: проверьте, прошел ли крайний срок или произошло ли одно событие перед другим.
Выражение: greater(ticks(variables('dateA')), ticks(variables('dateB')))
Пример: возвращается greater(ticks('2026-03-18'), ticks('2026-03-15')) ( true 18 марта — после 15 марта).
Это важно
Сравнение строк дат непосредственно с greater('2026-03-18', '2026-03-15') происходит с работой в формате ISO (ГГГГ-MM-DD), так как он сортируется лексографически. Но это не удается для других форматов.
greater('03/18/2026', '12/01/2025')возвращаетсяfalse, так как0<1 . Всегда используется ticks() для надежного сравнения дат.
30. Логическое значение логики (AND/OR в условиях)
Сценарий. Объединение нескольких условий в одном выражении, например утвержденный И объем > 1000.
Выражение: and(equals(variables('status'), 'Approved'), greater(variables('amount'), 1000))
Пример: возвращается true только в том случае, если состояние равно Approved и сумма превышает 1000.
Замечание
Вы не можете цепочки and/or с синтаксисом.&&/|| Всегда используйте форму функции. Для сложной логики вложено: or(and(A, B), and(C, D)) Удобочитаемость снижается при глубоком вложении. Вместо этого рассмотрите возможность использования действия условия с несколькими строками.
Карточка быстрого справочника
| Задача | Выражение |
|---|---|
| Верхний регистр | toUpper(value) |
| Нижний регистр | toLower(value) |
| Подстрока | substring(value, start, length) |
| Заменить | replace(value, old, new) |
| Разбивка | split(value, delimiter) |
| Содержит (текст) | contains(toLower(value), toLower(search)) |
| Теперь (отформатировано) | formatDateTime(utcNow(), 'yyyy-MM-dd') |
| Добавление дней | addDays(date, count) |
| День недели |
dayOfWeek(date) (0=Солнце) |
| Дни между | div(sub(ticks(end), ticks(start)), 864000000000) |
| Первый элемент | first(array) |
| Последний элемент | last(array) |
| Счетч. | length(array) |
| Join | join(array, delimiter) |
| Анализ JSON | json(stringValue) |
| Безопасное свойство | object?['key'] |
| Резервная обратная связь null | coalesce(value, default) |
| Пусто | empty(value) |
| If/else | if(condition, trueVal, falseVal) |
| Сравнение дат | greater(ticks(dateA), ticks(dateB)) |
| Int из строки | int(stringValue) |
| Float from string | float(stringValue) |
| AND | and(condA, condB) |
| OR | or(condA, condB) |
Связанная информация
- Справочник по коду ошибки облачного потока
- Устранение ошибок облачного потока
- Использование выражений в условиях
- Справочник по функциям выражений рабочего процесса
- Ограничения и конфигурация Power Automate
Примечание. Автор создал эту статью с помощью ИИ. Подробнее