В предыдущей публикации мы части затрагивали вопрос про использование 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 мы рассмотрели практический пример – с использованием экранирования непосредственно в запросе, либо с использованием функции для добавления необходимых нам апострофов.