Использование спецсимволов в запросах ODATA к SharePoint в Power Automate

В предыдущей публикации мы части затрагивали вопрос про использование ODATA запросов к SharePoint. В этой публикации мы рассмотрим использование спецсимволов в запросах ODATA к SharePoint.

Сценариев, при которых вы можете столкнуться с необходимостью использования спецсимволов в запросе, может быть довольно много. Ниже мы рассмотрим один из примеров.

Описание исходных данных и задачи

Наш исходный лист SharePoint содержит следующий данные:

Title
Item1 1
Little boy’s toy
Item2

Как мы видим – у одной из записей в названии присутствует спецсимвол – знак апострофа. Именно эту запись мы и будем пытаться получить через ODATA запрос.

Описание единичного запроса

Сначала давайте попробуем сформировать буквальный запрос и посмотрим, что будет:

Title eq 'Little boy's toy' 

Наш Flow завешился с ошибкой:

The expression "Title eq 'Little boy's toy'" is not valid. Creating query failed.
clientRequestId: 98cc87b7-3fd9-4fca-aeb6-6fe7275816e1
serviceRequestId: 98cc87b7-3fd9-4fca-aeb6-6fe7275816e1

Явно что-то неправильно с запросом. Давайте “экранируем” наш спецсимвол в запросе еще одним знаком апострофа и попробуем повторно запустить Flow:

Title eq 'Little boy''s toy'

Наш запрос завершился успешно. Нажав на кнопку с загрузкой результата, мы получаем JSON с ответом от сервера.

Особенности использования параметров в запросе

Рассмотрим другой пример. Строчку для запроса, предположим, мы формируем, запрашивая данные из другого источника и полученные данные храним в переменной Request. Затем текст этой переменной мы используем в запросе:

Чтобы сильно не усложнять логику- заполним значение переменной вручную. Теперь попробуем запустить Flow.

Эту ошибку мы уже видели ранее и знаем почему так произошло – необходимо корректно “экранировать” спецсимволы.

Собственно, нам нужно в исходном запросе заменить апостроф на два апострофа. Мы не знаем заранее – сколько апострофов можем быть в нашем тексте запроса. Для этого воспользуемся функцией replace и подготовим корректный текст запроса:

replace(variables('Request'),'''','''''')

Первым параметров функция принимаем текст, в котором необходимо выполнить замену – это текст в нашей переменной Request. Вторым параметром – что необходимо заменить. И третьим параметром – на что необходимо заменить. Важный момент – в функции replace апостроф в свою очередь необходимо экранировать.

Проверим результат:

Как мы видим – теперь запрос вернул корректный результат.

Итого

В этой публикации мы рассмотрели пример с использованием специальных символов в запросах ODATA к SharePoint. На примере одного из процессов Power Automate мы рассмотрели практический пример – с использованием экранирования непосредственно в запросе, либо с использованием функции для добавления необходимых нам апострофов.

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

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