SOLVED

JSON If Statement

Occasional Contributor

Hi I have an If Statement that conditionally formats the background based on a date as follows;

 

"attributes": {
"class": "=if(@currentField <= @now,'sp-field-severity--blocked', if(@currentField <= @now + 7776000000, 'sp-field-severity--warning', if(@currentfield >= @now + 78624000000, 'sp-field-severity--good','sp-field-severity--good')))"
},
 
I need to amend this to add an additional criteria based on a text value and tried adding if(@currentField == 'Failed', 'sp-field-severity--blocked' but its not working, any help on this appreciated.
4 Replies

@newbeetle your logic is flawed:

 

1) if(@currentField <= @now,'sp-field-severity--blocked', if(@currentField <= @now + 7776000000 - a date could be both of these so it wouldn't know how to apply the formatting consistently correctly.

 

2) you can't have "Failed" in a date/time column. You would need to have the status in a different column and then use that in the JSON formula.

 

I will post a solution shortly using more simple JSON than the class/attributes method.

 

Rob
Los Gallardos
Intranet, SharePoint and Power Platform Manager (and classic 1967 Morris Traveller driver)

Hi Rob,

 

I see what you mean, I'm very new to JSON but have applied your advice and have utilised an additional column and now have this working.

 

Many thanks :smile:

best response confirmed by newbeetle (Occasional Contributor)
Solution

@newbeetle the simpler JSON is:

{
  "$schema": "https://developer.microsoft.com/json-schemas/sp/column-formatting.schema.json",
  "elmType": "div",
  "txtContent": "@currentField",
  "style": {
    "background-color": "=if([$Status] == 'Failed', '#7d0000', ((if(@currentField <= @now, 'red', if((@currentField >= @now && @currentField <= @now + 7776000000),'orange','green')))",
    "color": "white"
  }
}

 

conditionalFormatDateColumn4.png

 

Rob
Los Gallardos
Intranet, SharePoint and Power Platform Manager (and classic 1967 Morris Traveller driver)

Thanks Rob, yes that is much easy.