«Apply to each» в Power Automate: понять, контролировать и избежать цикла
«Auf alle anwenden» обрабатывает списки поэлементно и часто появляется непреднамеренно. Как работает цикл, почему он замедляет работу и когда его можно убрать.
Что такое динамическое содержимое в Power Automate, как его вставлять и где новички обычно допускают типичные ошибки.
Когда ты создаёшь свой первый поток Power Automate, довольно быстро сталкиваешься с термином, который поначалу звучит абстрактно: динамическое содержимое. На самом деле за ним не стоит ничего сложного: это именно тот механизм, который вообще делает поток осмысленным, а именно передача реальных данных от одного шага к следующему вместо отправки только фиксированного текста.
Официальное объяснение в конструкторе облачных потоков формулирует это точно: динамическое содержимое представляет собой переменные, которые создаются триггерами и действиями внутри диаграммы потока, и они позволяют тебе выбирать ссылки на поля из предыдущих шагов и на их основе писать выражения, как описывает документация Microsoft о конструкторе облачных потоков. В этой статье на основе официальной документации Power Automate показано, что такое динамическое содержимое на самом деле, как вставлять его в конструкторе и где новички обычно допускают ошибки.
Каждый триггер и каждое действие в потоке в конце своего выполнения выдаёт результат, так называемый вывод. Например, триггер для новой отправки формы предоставляет имя, адрес электронной почты и отдельные поля ответа. Действие, которое получает файл из SharePoint, предоставляет имя файла, содержимое и дату изменения. Эти выходные данные доступны всем последующим шагам потока, тебе не нужно вводить их вручную или сохранять самостоятельно.
Именно эти доступные выходные данные Power Automate называет динамическим содержимым. Вместо того чтобы жёстко вписывать в текстовое поле "Новый твит от Max Mustermann", ты выбираешь в поле заполнитель, который во время выполнения автоматически заменяется реальным именем из триггера. Официальный учебник по первому облачному потоку наглядно показывает этот принцип: при отправке уведомления по электронной почте заполнители Автор твита и Текст твита вставляются прямо из триггера в поля Тема и Текст, как описано в руководстве "Создание облачного потока". Когда поток выполняется, там отображается уже не заполнитель, а реальное содержимое соответствующего твита.
В новом конструкторе облачных потоков ты открываешь выбор динамического содержимого через значок молнии рядом с полем ввода. Клик открывает всплывающее окно, в котором можно искать или прокручивать значения из предыдущих шагов. Также можно просто набрать косую черту (/) в поле, чтобы открыть тот же выбор. Поиск автоматически фильтрует подходящие поля, поэтому в длинных потоках не нужно просматривать каждую карточку по отдельности.
Редактор выражений и динамического содержимого в конструкторе к тому же многострочный и при необходимости может разворачиваться на весь экран, что особенно полезно для более сложных выражений с несколькими вложенными функциями, как указано в документации по конструктору облачных потоков.
Динамическое содержимое можно не только вставлять напрямую, но и оборачивать в функции. Частый пример: форматирование даты. С помощью функции formatDateTime ты объединяешь дату из триггера с нужным форматом вывода, например formatDateTime(triggerBody()?['date'], 'MM/dd/yyyy'). Динамическое содержимое при этом предоставляет исходное значение, а функция определяет, как оно будет выглядеть в итоге. Такое взаимодействие динамического содержимого и функций лежит в основе практически любого более сложного потока, независимо от того, преобразуешь ли ты числа, собираешь тексты или проверяешь условия.
Особенно в начале часто случается, что ожидаемое значение просто отсутствует в списке. Официальное руководство по устранению неполадок называет две типичные причины:
Подробности об обеих причинах и соответствующих шагах решения ты найдёшь в документации о пропавшем выборе динамического содержимого.
Если тебе нужно значение несколько раз в потоке или ты хочешь упростить выражение, стоит использовать действие операций с данными Составить (Compose). Оно принимает входные данные, например составное выражение или массив, а затем предоставляет результат в виде собственного вывода Outputs. Этот вывод после этого появляется в списке динамического содержимого как обычно и может использоваться повторно сколько угодно раз, как показывает документация по операциям с данными. Это особенно удобно, если ты не хочешь повторять сложное выражение в трёх разных действиях, а вместо этого вычисляешь его один раз и затем везде ссылаешься на него как на готовое динамическое содержимое.
Так и возникает настоящая сила потока: каждый шаг структурированно передаёт свои результаты следующему, а ты сохраняешь контроль над тем, куда попадает каждое значение, без копирования и вставки между системами.
Если при создании собственных потоков ты застреваешь именно на этих моментах, будь то отсутствие динамического содержимого, вложенные выражения или вопрос о том, как вообще должен быть структурирован поток, консультации по Power Automate от NordFlux помогают один раз аккуратно выстроить базовый принцип, вместо того чтобы каждый раз заново его угадывать.
Динамическое содержимое представляет собой вывод конкретного триггера или конкретного действия и существует автоматически, как только этот шаг присутствует в потоке. Переменную же нужно явно создавать с помощью действия Инициализировать переменную, и её можно многократно изменять в дальнейшем ходе потока, тогда как динамическое содержимое из шага всегда предоставляет значение именно этого одного выполнения.
Чаще всего это связано либо с включённой опцией Split On у триггера, либо с тем, что тип данных поля не соответствует целевому типу и поэтому отфильтровывается. Целенаправленный поиск в окне выбора отменяет эту фильтрацию, а также может помочь промежуточное действие Составить.
Да. Ты можешь использовать несколько значений из разных предыдущих шагов в одном поле, либо напрямую одно за другим, либо встроенными в функцию вроде concat(). Редактор выражений при этом по-прежнему даёт доступ к полному списку динамического содержимого независимо от того, из какого шага оно происходит.
В классическом понимании облачного потока не напрямую: потоки рабочего стола с Power Fx вместо этого работают с типизированными и динамическими значениями, которые функционируют похожим образом, но имеют собственные правила преобразования. Для облачных потоков, то есть классических цепочек триггер-действие, описанный здесь принцип применяется без ограничений.
Нет. Copilot может генерировать выражения, включая подходящее динамическое содержимое, также на основе описания на естественном языке. Тем не менее для понимания того, почему поток вообще работает и как исправить его в случае ошибки, стоит хотя бы раз самостоятельно потренироваться во вставке вручную.
Основатель NordFlux. Семь лет опыта, от веба и SEO до автоматизации в масштабах концерна, сегодня прагматично для среднего бизнеса и с немецким суверенитетом данных.
Сертификаты
«Auf alle anwenden» обрабатывает списки поэлементно и часто появляется непреднамеренно. Как работает цикл, почему он замедляет работу и когда его можно убрать.
Почему Power Automate выдает ошибку 429 и как целенаправленно устранить throttling с помощью контроля параллелизма и пакетной обработки.
Политики DLP защищают корпоративные данные в Power Automate. Вот как работают группы коннекторов, применение правил и первая политика.
Если динамическое содержимое не отображается в конструкторе, это редко случайность, чаще всего это нехватка структуры или неверный контекст цикла в потоке. NordFlux выстраивает ваши процессы Power Automate так, чтобы выходные данные предыдущих шагов оставались надежно доступными, вместо того чтобы бороться с симптомами через обходные пути вроде действия «Составить». На первой встрече мы рассмотрим структуру вашего потока и покажем причину.