As you’ve probably gathered by now, I spend a lot of my time in Power Automate. But recently I’ve really started to get into building PowerApps, beyond just tinkering. (I realize I’m pretty late to the party, but I’ve heard it’s better to be fashionably late than early, so …)
Naturally I’ve been interested in integrating PowerApps and Power Automate which, as it turns out, is super easy. From any of your screens in the PowerApps designer, simply click on the Action menu from the top bar and then click on the Power Automate action item.

This displays a list of the available flows that are triggered using the PowerApps action. Here, you can either select an existing flow or create a new one.
But this time, the focus of the post is not actually the flow. I’ll be talking about how to parse and consume the flow’s output in your app.
For another use of the data parsing expression I’m going to talk about, please see the amazing solution in Reza’s video.
Feel free to read ahead to my recommended expression below, and you can jump to Reza’s discussion of it in the video.
Consuming Data from a Power Automate Flow
Let me setup the scenario for you.
I am building a PowerApp to read and save data to a SharePoint list. It’s been done before, practically everyone has done it, nothing new here. Connecting to a SharePoint list easy and using the form control to display your fields as data cards is pretty slick.
The metadata of the list fields (Title, Required, etc.) is great. But there is one simple, yet pretty major missing piece of data missing from your datacards… field descriptions!

Wait, you mean to tell me that all those hours I spent entering the description information on each field, which shows up nicely in the SharePoint web interface, is no where to be found in my shiny new PowerApp???
Say it ain’t so. 😲
Fine, I’ll fire up PowerAutomate and fetch the field info myself and send it back to my PowerApp.

As you can see, sending data from your flow back to PowerApps is pretty easy when using that last action, which is a “Respond to a PowerApp or Flow” action. (In my flow I renamed it to “Return Field Info”.)
But actually parsing the data returned from the flow it and using in your PowerApp is where it gets tricky. Especially with complex data such as an array or a collection.
The simplest way is to use the Response action in Power Automate. But now this action, which was originally free to use, is $$ premium $$, ugh!
Surely there is another way to easily collect my data … I mean, I’m not reading in millions of records, just some basic field info.
There’s got to be another way.
Like me, you’ve probably come across numerous posts informing you that you return your array or collection data as a delimited string, and simply parse it once back in PowerApps.
The problem with most of these examples is that they require some special character(s) with which to delimit your data (and that’s now a potentially messy string blob), just so that you can break it apart using Dumbledore level wizard parsing in the PowerApp.
Plus, most of these examples don’t scale well, especially when you consider the time spent getting your output into nice-n-tidy JSON.
Since the goal here is to return a clean output that can be EASILY read and parsed, one of my preferred ways to do this is with regular expressions. (I’m a big fan of pattern matching.)
Wait, don’t leave … I promise what I’m about to show you isn’t that scary.
PowerApps provides some grrrreat, EASY support for regular expressions through several expression functions: IsMatch
, Match
, MatchAll
, etc.
The one we’ll use here is the MatchAll
expression. It looks like this:

So, assuming the output we get back from our flow looks something like this:
{
"body": [
{
"Id": "fa564e0f-0c70-4ab9-b863-0177e6ddd247",
"Title": "Title",
"Description": "Enter a title, which overrides the display of the document's name."
},
{
"Id": "cb19284a-cde7-4570-a980-1dab8bd74470",
"Title": "Description",
"Description": "Enter a summary of the document."
}
]
}
The MatchAll
expression and its regular expression pattern to parse that JSON above, will look something like this (this expression is highlighted in blue):
MatchAll(
GetListFieldInfo.Run(
"https://steelcutbytes.sharepoint.com/sites/steelcutbytes",
"/sites/steelcutbytes/ContentApprovalDocs/").fields,
"\{""Id"":""(?<Id>[^""]*)"",""Title"":""(?<Title>[^""]*)"",""Description"":""(?<Description>[^""]*)""\}"
)
);
Let’s break down what the MatchAll is doing:
GetListFieldInfo.Run
– This runs my flow named GetListFieldInfo sending it 2 parameters, 1) the URL to the site of where the list resides, 2) the server relative path of to the list. The output .fields
returns the field info JSON as a literal string, which looks like this:
"{""body"":[{""Id"":""fa564e0f-0c70-4ab9-b863-0177e6ddd247"",""Title"":""Title"",""Description"":""Enter a title, which overrides the display of the document's name.""},{""Id"":""cb19284a-cde7-4570-a980-1dab8bd74470"",""Title"":""Description"",""Description"":""Enter a summary of the document.""}]}"
Next, the regular expression pattern magic:
"\{""Id"":""(?<Id>[^""]*)"",""Title"":""(?<Title>[^""]*)"",""Description"":""(?<Description>[^""]*)""\}"
This pattern basically says:
- Match the string pattern that starts with a double quoted curly brace/bracket string
"{"
(object declaration in JSON),
- Followed by a literal double quoted string
"Id":
(property key in JSON),
- Capturing every character after the literal double quoted
"Id"
string above (which is NOT a double quote) in a special label named<Id>
(property value in JSON), - Followed by the closing double quote
"",
(closes property value and starts next property key in JSON)
And this repeats for the Title
and Description
keys/values.
Lastly, the MatchAll
output is stored in a collection named FieldInfo
, and looks like this:

Putting it all together
This final statement (below) is what resides in my PowerApp OnStart
:
ClearCollect(FieldInfo, MatchAll(GetListFieldInfo.Run(
"https://steelcutbytes.sharepoint.com/sites/steelcutbytes",
"/sites/steelcutbytes/ContentApprovalDocs/").fields,
"\{""Id"":""(?<Id>[^""]*)"",""Title"":""(?<Title>[^""]*)"",""Description"":""(?<Description>[^""]*)""\}"
)
);
Since the output is now a collection with named columns, you can reference your output like this:
LookUp(FieldInfo, Title = "field description you want").Description
I hope this helps.
Happy coding!
Follow My Blog
Get new content delivered directly to your inbox.