Разбор многострочного параметра при запуске Flow

В этой короткой заметки мы рассмотрим одну особенность Power Automate при “парсинге” строки. Выполняя разбор многострочного параметра при запуске Flow для элемента SharePoint, я наткнулся на то, что на самом деле такая, казалось бы, тривиальная операция выполняется не совсем так просто.

Что необходимо сделать

Например, у нас есть Flow, который запускается вручную пользователем для определенного элемента SharePoint. При запуске пользователь вручную указывает несколько строк. Для каждой из этих строк выполняется логика, которая настроена непосредственно во Flow.

Пример запуска такого Flow:

Для каждой из строки (line1, line2 и line3) будет выполнятся определенная логика. В том Flow, для которого я конфигурировал логику в каждой строке содержался номер заявки, для которой необходимо было заполнить пару полей.

Реализация

Непосредственно перед тем, как выполнять дальнейшие действия со строками, которые указал пользователь при запуске Flow нам необходимо выполнить следующее:

  1. Получить содержимое всего поля, которое заполнил пользователь.
  2. Сформировать массив, в котором каждая новая строка будет являться отдельным элементом массива. Для этого необходимо выполнить разбор многострочного параметра.

Именно на шаге 2 и возникли некоторые особенности.

Выполним настройку.

Сначала нам необходимо создать новый Flow и в качестве триггера выбрать событие SharePoint “For selected Item”:

Именно в параметре Input пользователь и будет указывать несколько строк.

Далее нам необходимо инициализировать переменную и сохранить в неё значение всего параметра, который заполнил пользователь:

Собственно, после этого нам необходимо выполнить “парсинг” – каждую новую строку положить в отдельный элемент массива.

В Power Automate есть функция split, которая первым параметром принимает исходный текст, а вторым параметром принимает значение разделителя.

Как мы понимаем исходный текст у нас уже есть в переменной User Input, но вот что мы будем указывать в качестве разделителя? Хороший вопрос, как говорится 🙂 Изначально я посчитал, что указать в качестве разделителя символ новой строки будет достаточно:

split(variables('User Input'),'\n')

Но это не так. При запуске весь текст сохранялся в первом элементе массива:

Это явно не то, что нам нужно.

Единственно обходное решение, которое я нашел – это завести еще одну дополнительную переменную для хранения символа новой строки.

Этого не видно на скриншоте, но в поле “Value” находится символ новой стройки, т.е. вы перемещаете курсор в поле “Value” и один раз нажимаете Enter.

И вот уже затем в качестве разделителя мы будем использовать эту переменную в нашей функции split:

split(variables('User Input'),variables('New Line'))

Вот теперь мы получили именно то, что нам было нужно – массив строк с пользовательским текстом:

Вот теперь мы уже можем использовать наш массив для циклического обхода. Но это уже совсем другая история 🙂

Итоговый Flow

Пример итогового Flow для разбора многострочного параметра приведен ниже:

В переменной New Line находится символ новой строки, который мы указали один раз нажав кнопку Enter в поле Value.

Функция для парсинга параметра:

split(variables('User Input'),variables('New Line'))

Итоговый запуск Flow:

Заключение

В этой небольшой заметке мы разобрали пример того, как можно выполнить “парсинг” многострочного текста с пользовательским вводом таким образом, чтобы каждая новая строка была отдельным элементом массива.

Казалось бы, разделение текста по символу новой строки довольно тривиальная операция, но именно в платформе Power Automate есть особенности.

Добавить комментарий

Ваш адрес email не будет опубликован.