Link- og personfelter på et listeelement med HTTP i Power Automate
Når Create item ikke rækker: sådan sætter jeg et hyperlinkfelt med beskrivelse og en håndfuld personfelter med ét HTTP-kald til SharePoint.
Handlingen Create item i Power Automate klarer tekst og tal fint. Et hyperlinkfelt med både adresse og beskrivelse, og personfelter, hvor jeg kun har brugerens id, er nemmere at sætte direkte mod SharePoints REST-API. Så jeg opretter elementet med Create item og retter det lige bagefter med Send an HTTP request to SharePoint.
Fremgangsmåde#
URI’en peger på det element, Create item lige har lavet:
_api/web/lists/getbytitle('Distribution')/items(@{outputs('Create_item_-_Distributionlist')?['body/ID']})
Man kan også pege på listen med dens id i stedet for titlen:
http://<sitecollection>/<site>/_api/web/lists/getById(id)
Headers:
{
"Accept": "application/json;oData=verbose",
"Content-Type": "application/json;oData=verbose",
"X-HTTP-Method": "Merge",
"IF-MATCH": "*"
}
X-HTTP-Method: Merge gør, at kun de felter, der står i body, bliver ændret. IF-MATCH: * betyder, at jeg er ligeglad med, hvilken version af elementet der ligger — den bliver overskrevet.
Body:
{
"__metadata":{"type":"SP.Data.ActivityLogListItem"},
"Title":"@{variables('varTitle')}",
"Request_action":"@{variables('varRequest_action')}",
"Request_type":"@{variables('varRequest_type')}",
"Request_initiatorStringId": "@{variables('varRequest_initiator_ID')}",
"Permission_recipientStringId": "@{variables('varPermission_recipient_ID')}",
"Request_approverStringId": "@{variables('varRequest_approver_ID')}",
"Request_implementorStringId": "@{variables('varRequest_implementor_ID')}",
"Request_SecurityValidatorStringId": "@{variables('varRequest_SecurityValidator_ID')}",
"Message":"@{variables('varMessage')}",
"RequestLink":{
"__metadata":{"type":"SP.FieldUrlValue"},
"Description":"@{variables('varRequestLink_Description')}",
"Url":"@{variables('varRequestLink_Url')}"
}
}
- Personfelter sættes med feltets navn plus
StringId, og værdien er brugerens id som tekst. - Hyperlinkfeltet er et objekt for sig med sin egen type,
SP.FieldUrlValue, og felterneDescriptionogUrl.
Find typenavnet#
__metadata.type skal være listens elementtype, som følger mønsteret SP.Data.[listname]ListItem. Er der tvivl, kan listen selv spørges:
https://[SharePoint site]/_api/web/lists/getbytitle('ListTitle')?$select=ListItemEntityTypeFullName
Svaret står i ListItemEntityTypeFullName, fx SP.Data.ActivityLogListItem.
Det der driller#
- Typen skal passe til listen i URI’en. Er den forkert, afviser SharePoint hele kaldet — og det er typenavnet, ikke listens visningsnavn, der tæller.
- Personfelter vil have brugerens id på webstedet, ikke e-mail eller navn. Det skal slås op, før kaldet kan laves.