Spring til indholdet

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.

Opdateret Power AutomateSharePoint Online 2 min. læsning

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 felterne Description og Url.

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.

Alle noter