Я пытаюсь создать столбцы в списке SharePoint из JSON, используя поток Power Automate.
Мне удалось создать столбец с «Отправить HTTP-запрос в SharePoint» вручную, используя: { "__metadata": { "type": "SP.Field" },"FieldTypeKind": 9,"Title":"TestColumnInt"}
Однако я хочу автоматизировать процесс. Итак, я хочу зациклить все это в зависимости от количества необходимых столбцов, как описано в JSON.
На первом этапе мне не удается извлечь имя атрибута из массива. Например, для этого ввода (вход исходит из элементов потока PARSE JSON):
[
{
"date": "08/31/2020",
"hour": 1,
"production": 1,
"machine": "Z22",
"completeDate": "08/31/2020 01:00"
},
{
"date": "08/31/2020",
"hour": 4,
"production": 1,
"machine": "Z44",
"completeDate": "08/31/2020 04:00"
}
]
Я хочу вывод:
[ "date","hour","production", "machine","completeDate"]
К сожалению, я не могу понять, как используются переменные объекта. Каждый раз, когда я использую функцию, например, split, я получаю сообщение об ошибке, похожее на «Ожидается строка или массив, а не объект».
Функциональные клавиши тоже несовместимы.
Заранее спасибо за вашу помощь !
Вы можете использовать соединитель Advanced Data Operations и операцию Json Properties to Name Value Pair Array
, чтобы превратить первый элемент в массиве в структуру ключ/значение, которая затем позволит вам извлечь имена свойств.
Примечание. Каждый элемент должен быть сбалансирован (т. е. иметь одинаковый набор полей), для других вам потребуется проделать дополнительную работу, чтобы определить это. Однако в этом коннекторе есть и другие операции, которые помогут вам в этом.
Шаг Initialize JSON
просто содержит ваш JSON, а следующий шаг преобразует структуру в объект JSON, который дает вам возможность динамически извлекать имена полей.
Это JSON, который будет возвращен...
[
{
"propertyName": "completeDate",
"propertyType": "String",
"propertyValue": "08/31/2020 01:00"
},
{
"propertyName": "date",
"propertyType": "String",
"propertyValue": "08/31/2020"
},
{
"propertyName": "hour",
"propertyType": "Integer",
"propertyValue": 1
},
{
"propertyName": "machine",
"propertyType": "String",
"propertyValue": "Z22"
},
{
"propertyName": "production",
"propertyType": "Integer",
"propertyValue": 1
}
]
Затем вы можете перебрать этот массив, извлечь каждое имя свойства и создать массив, как вы описали в своем вопросе.
Тогда используйте LogicApps, нет такого понятия, как «Премиум», вы просто используете коннектор. Кроме того, вы можете использовать коннектор как действие HTTP и при необходимости обойти прямой коннектор. Имейте в виду, что это платный коннектор, но он очень дешевый.
Извините, я очень новичок в этом. Когда я добавляю действие в поток и выбираю «Расширенные операции с данными», я могу выбрать действие «Свойства Json для именования массива пар значений» (кстати, рядом с ним есть зеленый премиум-тег), но параметры «Имя подключения» и «Ключ API расширенных операций с данными». У меня нет такого действия, как у вас.
Да, вы должны подписаться на пробную версию, statesolutions.com.au/pricing … если вы хотите избежать премиум-класса, вам нужно использовать LogicApps в Azure. Это движок, на котором работает PowerAutomate, но он основан на потреблении. Вам предстоит многому научиться. 😊
Я посмотрю на это. Большое спасибо за всю эту информацию. Я обязательно вернусь, когда достигну своей цели.
Не беспокойтесь, я только что понял, что не дал вам выражение на втором шаге. Я использовал выражение first() для получения первого элемента в массиве и передал его. Это должен быть объект, который вы предоставляете, поэтому я использовал первую функцию. Кроме того, не забудьте отметить это как ответ, если он вам помог. Спасибо
Большое спасибо за ваше решение. Однако «Свойства Json для именования массива пар значений» кажутся премиальной функцией. Нет ли другого способа получить этот массив?