Forum Discussion
JSON format broken?
- Nov 16, 2021
This is happening because of recent change in JSON schema to officially support Approval Status column in JSON formatting.
Due to this update, the @currentField and [$_ModerationStatus] will resolve to internal code (enum value) and @currentField.displayValue and [$_ModerationStatus.displayValue] will resolve to the localized string (I guess according to language).
The Microsoft official docs will be updated with more info in the coming weeks. You can check the details for now at: SharePoint Online Column Formatting for Approval Status: uses language specific text?
Similar thread: Approval Status Column Suddenly Numeric - Due to Column Formatting?
Related Read: How to find the Internal name of columns in SharePoint Online?
Please click Mark as Best Response & Like if my post helped you to solve your issue. This will help others to find the correct solution easily. It also closes the item. If the post was useful in other ways, please consider giving it Like.
For SharePoint/Power Platform blogs, visit: Ganesh Sanap Blogs
Danie365 Thanks.
I agree. It looks like Microsoft added a feature that someone requested, and broke something that already worked. Changing [$_moderationStatus] with [$_moderationStatus.displayValue] didn't work for me for some reason. It may be something simple i have missed, as i have been staring at this code for days.... The column still is not showing for files where the Approval Status is "Pending".
Can you please take a quick look to see if you can see something i have done wrong?
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "='{\"id\": \"' + if([$ReviewInProgress]=='','xxxxxxxx',if([$ReviewInProgress]=='No','xxxxxxxxx',' ')) + '\"}'"
},
"txtContent": "=if([$ReviewInProgress]=='Approval','Sent for Approval','Send for Approval')",
"style": {
"background-color": "=if([$ReviewInProgress]=='Approval','Orange','Green')",
"color": "white",
"border-radius": "20px",
"border-style": "solid",
"border-color": "white",
"border-width": "4px",
"visibility": {
"operator": "?",
"operands": [
{
"operator": "==",
"operands": [
"[$_moderationStatus.displayValue]",
"Pending"
]
},
"visible",
"hidden"
]
}
}
}
Hey WorkflowIQ, try this...
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "button",
"customRowAction": {
"action": "executeFlow",
"actionParams": "='{\"id\": \"' + if([$ReviewInProgress]=='','xxxxxxxx',if([$ReviewInProgress]=='No','xxxxxxxxx',' ')) + '\"}'"
},
"txtContent": "=if([$ReviewInProgress]=='Approval','Sent for Approval','Send for Approval')",
"style": {
"background-color": "=if([$ReviewInProgress]=='Approval','Orange','Green')",
"color": "white",
"border-radius": "20px",
"border-style": "solid",
"border-color": "white",
"border-width": "4px",
"visibility": "=if(([$_moderationStatus.displayValue] == ‘Pending’),’visible’,’hidden’)"
}
}- WorkflowIQNov 17, 2021Copper Contributor
Danie365 Thanks for the help, i really appreciate it. I still can't get it to work though. I pasted your code exactly, just adding my correct flow id, and replacing the single quotes (as they paste a different character if copying from here). Do you have any other suggections on what could be wrong? Thanks again, screenshot below.
- Danie365Nov 17, 2021Brass Contributor
WorkflowIQ are the "txtContent" and "background-color" missing a set or parenthesisssssssss (no idea how to spell the plural of that!)...
I'm just brainstorming now as my lack of code knowledge is going to become apparent...
but maybe try this...
{ "$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json", "elmType": "button", "customRowAction": { "action": "executeFlow", "actionParams": "='{\"id\": \"' + if([$ReviewInProgress]=='','xxxxxxxx',if([$ReviewInProgress]=='No','xxxxxxxxx',' ')) + '\"}'" }, "txtContent": "=if(([$ReviewInProgress]=='Approval'),'Sent for Approval','Send for Approval')", "style": { "background-color": "=if(([$ReviewInProgress]=='Approval'),'Orange','Green')", "color": "white", "border-radius": "20px", "border-style": "solid", "border-color": "white", "border-width": "4px", "visibility": "=if(([$_moderationStatus.displayValue] == ‘Pending’),’visible’,’hidden’)" } }- WorkflowIQNov 17, 2021Copper Contributor
Danie365 LOL, I have no idea either about the plural, i usually give in and Google it 🙂
The rest of the code is OK, i tested by just replacing
"visibility": "=if(([$_moderationStatus.displayValue] == ‘Pending’),’visible’,’hidden’)"
with
"visibility": "visible"
and everything else works. (the button i am trying to conditionally hide always shows though of course)
I also tried dropping one of the parenthesisss so that is is:
"visibility": "=if([$_moderationStatus.displayValue]=='Pending','visible','hidden')"Still no luck....... I'll keep looking and post back here when I have something that works.Thanks again!!