
I actually got it to work after all, with much playing around with the JSON!
So I had to add the customRowAction and all the formatting of the button from my column along with the columnFormatterReference and then set the customRowAction for the container itself to none.
Snippet below which is hopefully helpful!
{
"elmType": "div",
"attributes": {
"class": "=if([$Status] == 'Awaiting Approval', 'ms-bgColor-tealLight ms-bgColor-teal--hover ms-fontColor-white ms-fontSize-12 ms-fontWeight-bold', 'ms-bgColor-transparent ms-bgColor-neutralQuaternaryAlt--hover ms-fontColor-neutralQuaternary ms-fontColor-tealLight--hover ms-fontSize-12')"
},
"customRowAction": {
"action": "setValue",
"actionInput": {
"Status": "Approved"
}
}
},
{
"elmType": "div",
"attributes": {
"class": "ms-bgColor-white sp-css-borderColor-neutralLight sp-card-borderHighlight sp-card-subContainer"
},
"customRowAction": {
"action": "none"
},
"children": [
{
"elmType": "div",
"attributes": {
"class": "sp-card-displayColumnContainer"
},
"children": [
{
"columnFormatterReference": "[$ChangeStatus]"
}
]
},