FINALLY RESOLVED.
I was…not using enough quotation marks??? See below in case this ever comes up for someone else. I switched to a checkbox column for readability, since the problem for me was 1000% the nesting of objects, but presumably this would work for status, date, and other columns that require an object, not just a single value like numbers and text.
Google Apps Script code:
var test = JSON.stringify("{\"checked\": \"true\"}");
var mutation = JSON.stringify({'query' : 'mutation{change_column_value(board_id: XXXXXXXXX,item_id:XXXXXXXXX,column_id: "check9",value:'+test+'){id}}'});
Stackdriver log shows this result:
Aug 30, 2020, 10:24:28 AM Info {"query":"mutation{change_column_value(board_id: XXXXXXXXX,item_id:XXXXXXXXX,column_id: \"check9\",value:\"{\\\"checked\\\": \\\"true\\\"}\"){id}}"}
Aug 30, 2020, 10:24:29 AM Info Mutation response: {"data":{"change_column_value":{"id":"XXXXXXXXX"}},"account_id":XXXXXXX}
Previous attempts failed because I was doing the following:
var test = JSON.stringify({"checked": "true"});
Which fails to put quotation marks outside the curly braces and leads to a parse error.
EDIT: For anyone else reading this, if you are trying to mutate multiple columns and not just one - use the third code block, not the first, to set your “var test.” The extra quotation marks work on single column mutation objects, but not multi-column mutations. Devs, y’all might want to make note of this, because it took me some brute force to figure this out. The documentation for this part of the API may require another pass. It’s also odd that one mutation requires you to pass the object as a string, but the other one accepts nested objects…maybe I’m just looking at it wrong.
Thanks again for the help. I imagine this is extremely basic, but it was definitely a learning experience for me