Phew, what a long title!
Here’s the dealeo. You have a SharePoint list. You search it for an item from a Logic App or Flow. You know there’ll be a single match so you even add the ‘Top Count’ to be 1.
Yet when you try and say assign that output to a variable it creates a For each loop.
Notice I am selecting ‘value – Item’ to add to the Compose section here.
The moment I do that it makes this For each loop.
I don’t want that. I could work around it but why… I’d just like to get the first item from the SharePoint list.
If you Google there’s answers to this. I am just lazy to keep Googling each time so I’ll make a blog post so I know what to do next time.
The trick is to use the
first function. All I have to do in the above case is change the Compose block to be something like this:
first(body('Get_items')?['value'])?['<property I want>']
first function I pass the
body function with the name of the step as its parameter. In the above case the step is called “Get items” so we write it as “Get_items” – replace spaces with underscores basically. So that becomes
first(body('Get_items'). Notice I didn’t close the brackets, that’s intentional. What I want from
body('Get_items') is the value, so I should have actually put
body('Get_items')?['value'] – or with the
first(body('Get_items')?['value']). This will return the first item in the collection of values returned from the “Get items” step.
I know from this item I want the “Name” column for instance. So I would write that as
first(body('Get_items')?['value'])?['Name']. Notice the property is outside the
And that’s it!