Dear Shannon,
As the Now date is dynamic and the calculated column may not show the correct Now date, I suggest you create a scheduled flow to run each day to show the correct Now date and help you validate whether the JSON formatting works correctly.
You can create the text column Now, Now+14, Now+15 and Now+21 to update the conditional date and create the flow as follows.
Now: formatDateTime(utcNow(),'M/dd/yyyy')
Now+14: formatDateTime(adddays(utcNow(),14),'M/dd/yyyy')
Now+15: formatDateTime(adddays(utcNow(),15),'M/dd/yyyy')
Now+21: formatDateTime(adddays(utcNow(),21),'M/dd/yyyy')
You need to use the internal column name in JSON. For example, for the column Scheduled?, you can click on List Settings>select the column and you will see the column URL like https://contoso.sharepoint.com/sites/sitename/\_layouts/15/FldEdit.aspx?List=%7Blist guid%7D&**Field=Scheduled\_x003f\_**.
So the column internal name is Scheduled_x003f_.
You can use the following code as an example to see and let us know the result in your environment.
{
"$schema": "https://developer.microsoft.com/json-schemas/sp/v2/column-formatting.schema.json",
"elmType": "div",
"txtContent": "@currentField",
"style": {
"background-color": "= if(@currentField <= addDays(Date(@now,toDateString()),14) && [$Scheduled_x003f_] !='Scheduled','red',if(@currentField > =addDays(Date(@now,toDateString()),15) && @currentField <= addDays(Date(@now,toDateString()),21) && [$Scheduled_x003f_] !='Scheduled','orange','green'))"
}
}
If the column is showed in the view, the column formatting layout will be showed in all views. However, there are some workarounds. For example, you can hide the formatted column from the view or create a new column with the same values as the formatted column and then hide the formatted column from the view.
Your effort and time are greatly appreciated!
Sincerely
Cliff | Microsoft Community Moderator