As part of developing custom functions for a google sheet using Google Apps Script (GAS), I am trying to get a flattened tree of an object's property (key?) names. I'm not interested in any of the values, I just want to print out a dot notation tree of all of the object's property (key) names. The object has an unknown depth and unknown structure.
example:
{
"level1_prop1": "stuff",
"level1_prop2": 0,
"level1_prop3": 50,
"level1_prop4": [{
"level2_prop1": "more stuffs, and things",
"level2_prop2": "10000",
"level2_prop3": {
"level3_prop1": {
"level4_prop1": "other stuff",
"level4_prop1": "so much stuff",
},
"level3_prop2": null,
}
}, {
"level2_prop1": "still more and more",
"level2_prop2": "10001",
"level2_prop3": {
"level3_prop1": {
"level4_prop1": "other stuffssssss",
"level4_prop1": "so much stuffssssssss",
},
"level3_prop2": null,
}
}
]
}
desired output in a string or array of strings:
object.level1_prop1
object.level1_prop2
object.level1_prop3
object.level1_prop4
object.level1_prop4.level2_prop1
object.level1_prop4.level2_prop2
object.level1_prop4.level2_prop3
object.level1_prop4.level2_prop3.level3_prop1
object.level1_prop4.level2_prop3.level3_prop1.level4_prop1
object.level1_prop4.level2_prop3.level3_prop1.level4_prop2
object.level1_prop4.level2_prop3.level3_prop2
I ultimately want to use this to selectively remove specific properties/keys throughout the entire object. for example:
remove(object.level1_prop4.level2_prop3.level3_prop1)
would result in
object.level1_prop1
object.level1_prop2
object.level1_prop3
object.level1_prop4
object.level1_prop4.level2_prop1
object.level1_prop4.level2_prop2
object.level1_prop4.level2_prop3
object.level1_prop4.level2_prop3.level3_prop2
update: adding specification that the answer is intended for use in a custom Google Apps Script (GAS) function, since the first wave of answers are causing errors when I paste them into my code.gs file. My apologies to those who already answered under a different pretense.