I have created a flow using the following options:
Get Items (Sharepoint List)
Fiter Array
Select
Create CSV Table
Send Email.
For the select option - I have selected various fields from my sharepoint list including one which is a multiple selection field.
The flow works and exports to CSV - however the output for the multi-selct field is a long string which includes the value retrieved i.e
[{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference","Id":0,"Value":"Main Hall"},{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference","Id":1,"Value":"Dining Room"},{"@odata.type":"#Microsoft.Azure.Connectors.SharePoint.SPListExpandedReference","Id":3,"Value":"Kitchen"}]
What I would like is to receive the values seperated by a comma or semi colon to make this more user friendly. for example in the output above it should ideally read: Main Hall; Dining Room; Kitchen
Any suggestions as to how I can do this by either manipulating the output string as an additional step in the flow or changing the way I collect the data for this column.
Thanks in advance
Amit
Solved! Go to Solution.
okay, i had to rethink this csv export. so i do the csv export in two steps:
it's a little bit messi and the flow is now slow, but it works.
like:
step 1 for each choice-field:
load all items
loop through all this items
load per each item the multiselectvalue (choice-field) collection into an array variable
loop though the array-values
append each multiselectvalue to a string variable concatenated with your "separator"
update listitem with the string value (which contains all separated values)
step 2:
load all items
create csv
You can use the following expression for your multi-select column:
xpath(xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}'))), '/root/choices/Value/text()')
**My SP column (multi-select) field is called "Officers". Change yours accordingly.
Result:
@Rathiya, @amitlathia, @Anonymous, @kayaking, @Roger365
@Anonymous,
My colleague @svarukala is the real hero here. He helped me with this original issue and has provided us the following explanation:
Start here: item()?['Officers']
The should be in json format but incomplete, without a parent and root element to enclose the items.
concat('{"root":{"choices":', item()?['Officers'] , '}}')
This concats the missing parent/root to it.
xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}')))
Then use json() to convert this string to JSON object. Then convert JSON obj to XML object.
xpath(xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}'))), '/root/choices/Value/text()')
Now that the XML structure is good, we use xpath to select all the values within the choice options.
Hi @amitlathia,
Could you show me a screenshot of your flow configuration?
According to your description, I created a simple flow likes below. In the Select action, configure the Choice column (multiple selection enabled field) with the following expression:
last(item()?['Choice1'])?['Value']
In the email body, the choice value would be ideally read.
Please take this for a reference and try it on your side.
Best regards,
Mabel Mao
Hi Mabel ( @v-yamao-msft),
Please see attached my flow now including your suggested string. This works to the extent that only the value shows in the resulting CSV file, however what I would like is all the values showing not just the very last one. For example if 2 rooms are booked, it would show "Main Hall; Kitchen". At the moment only "Kitchen" would appear.
Is there any way of expanding the expression so as to collect the multiple values?
Thank you for your help with this.
Amit
Hi @v-yamao-msft Just wondering if you have had any further ideas as to how I can retrieve all the values out of a multi-select sharepoint column. I would imagine I am not the only one with a use case for this so any help would be great to me and others.
Thanks once again
Amit
I am also having this issue and cannot figure it out for the life of me!
do you found a solution for that?
Any solution ?
okay, i had to rethink this csv export. so i do the csv export in two steps:
it's a little bit messi and the flow is now slow, but it works.
Can you provide a screenshot please ? I didn't get how you export the multi values field into single value
Thank you
like:
step 1 for each choice-field:
load all items
loop through all this items
load per each item the multiselectvalue (choice-field) collection into an array variable
loop though the array-values
append each multiselectvalue to a string variable concatenated with your "separator"
update listitem with the string value (which contains all separated values)
step 2:
load all items
create csv
Any solution on this ?
Can you please share the screenshot of your approach
You can use the following expression for your multi-select column:
xpath(xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}'))), '/root/choices/Value/text()')
**My SP column (multi-select) field is called "Officers". Change yours accordingly.
Result:
@Rathiya, @amitlathia, @Anonymous, @kayaking, @Roger365
Thank you 🙂 Your solution worked for my problem where i wanted to fetch only values of multiple choice.
Can you help to explain the expression.
@Anonymous,
My colleague @svarukala is the real hero here. He helped me with this original issue and has provided us the following explanation:
Start here: item()?['Officers']
The should be in json format but incomplete, without a parent and root element to enclose the items.
concat('{"root":{"choices":', item()?['Officers'] , '}}')
This concats the missing parent/root to it.
xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}')))
Then use json() to convert this string to JSON object. Then convert JSON obj to XML object.
xpath(xml(json(concat('{"root":{"choices":', item()?['Officers'] , '}}'))), '/root/choices/Value/text()')
Now that the XML structure is good, we use xpath to select all the values within the choice options.
I'm trying to use the same expression in "Select" operation, but getting the below error. Any idea what might be wrong?
'The template language function 'json' parameter is not valid. The provided value '{"root":{"choices":}}' cannot be parsed: 'Unexpected character encountered while parsing value: }. Path 'root.choices', line 1, position 19.'. Please see https://aka.ms/logicexpressions#json for usage details.'.
Thanks
Amir
Hi,
But what if I want to retrieve the item based on the first selected option ?
User | Count |
---|---|
88 | |
39 | |
23 | |
20 | |
16 |
User | Count |
---|---|
127 | |
49 | |
46 | |
27 | |
25 |