logo
search
SharePoint Document Issues

How to Get Display Values for Changed SharePoint Choice Columns in Power Automate

John WilsonJohn Wilson Oct 23, 2026 869 views

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.

Extract Display Values for Changed SharePoint Choice Columns in Power Automate
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.
Before you start

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.

Solution 1Recommended

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.

1
Configure the 'Get changes' Action

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.

2
Filter the Changed Columns

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'.

3
Retrieve the Previous Version

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.

4
Extract the Display Value

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.

Use Expressions to Extract Choice Field Values
Expression Applied Successfully: This condition seamlessly handles both standard text fields and complex choice OData objects, ensuring your email report is easy to read.
Free Microsoft Office alternative

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.

Fully compatible with Microsoft Word, Excel, and PowerPoint formats (.docx, .xlsx, .pptx).Lightweight architecture ensures fast startup and smooth document editing.Familiar, intuitive user interface requires zero learning curve for Office users.Built-in PDF editing tools for comprehensive document management.
QA img-9

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.