How to Get Display Values for Changed SharePoint Choice Columns in Power Automate
Question details
The user needs a Power Automate flow to accurately report changed SharePoint columns, specifically extracting the display values for choice fields rather than OData JSON objects.

- Product
- Microsoft Power Automate
- Device & OS
- not provided
- Scenario
- Automating email reports to track previous and current values of modified SharePoint list items.
- Observed behavior
- While text and date fields output correctly, choice fields return OData JSON objects instead of the actual selected text values.
Ensure you have Owner or Contributor permissions on the target SharePoint list and verify that Versioning is enabled in the list settings so Power Automate can track changes.
Use Expressions to Extract Choice Field Values
Implement conditional expressions within your Power Automate flow to parse the OData object and isolate the display value for choice fields.
SharePoint choice fields are complex data types that output as JSON objects containing metadata. To get the human-readable text, you must dynamically check if the returned value is an OData object and extract the 'Value' property.
Add the 'Get changes for an item or a file (properties only)' action. In the 'Since' field, use the expression add(int(triggerOutputs()?['body/{VersionNumber}']),-1) to calculate the previous version number.
Use a 'Filter array' action on the output of ColumnHasChanged. Use the split() expression to separate by commas: split(string(outputs('Get_changes_for_an_item_or_a_file')?['body/ColumnHasChanged']),',') and retain only the entries containing ':true'.
Add a 'Send an HTTP request to SharePoint' action using a GET method to fetch the old values. Use the SinceVersionId from the 'Get changes' action to target the correct historical version of the item.
When mapping the current values in a 'Select' or 'Compose' action, use this expression to handle choice fields correctly: if(contains(string(outputs('Compose_2')),'SPListExpandedReference'),outputs('Compose_2')?['Value'],outputs('Compose_2')). This checks for the complex object and extracts just the text value.

Enhance Your Document Workflow with WPS Office
While Power Automate handles your complex SharePoint list automation, you still need a reliable tool to manage your actual documents. WPS Office provides a lightweight, highly compatible, and free alternative to Microsoft Office for all your document creation and editing needs.

Frequently Asked Questions
Why do SharePoint choice columns return OData objects in Power Automate?
SharePoint handles complex field types like Choice, Person, or Lookup as objects containing metadata (such as the ID and Value) rather than simple text strings. Power Automate reads the raw REST API JSON response, resulting in the OData object output.
How do I get the previous value of a changed SharePoint item?
You can retrieve the previous value by using the 'Send an HTTP request to SharePoint' action, querying the item's version history using its ID and the SinceVersionId obtained from the 'Get changes for an item or a file' action.
Does this expression work for multi-select choice columns?
No, multi-select columns return an array of objects rather than a single object. You will need to use a 'Select' action to map the 'Value' property from the array, followed by a join() function to concatenate the display values into a single string separated by commas.




