See --> https://learn.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges-group
https://learn.microsoft.com/en-us/javascript/api/excel/excel.range?view=excel-js-preview#excel-excel-range-group-member(1)
Here is how I did it. First thing I noticed was that I wanted certain groups to be collapsed by default. I accomplished this w/ hidden = true which combined w/ grouping, its more of a hide by default.
const Rng_Group_Obj = {
"group": {
"groupOptionString": {
"ByRows": "ByRows",
"ByColumns": "ByColumns",
},
},
"columnHidden": true,
"rowHidden": true,
}
function Do_Group_Rng(rng, ByColumns, ByRows, Opt_Hidden_By_Default) {
if (ByColumns == true) {
rng.group(Rng_Group_Obj.group.groupOptionString.ByColumns)
if (Opt_Hidden_By_Default == true) { rng.columnHidden = Rng_Group_Obj.columnHidden }
}
if (ByRows == true) {
rng.group(Rng_Group_Obj.group.groupOptionString.ByRows)
if (Opt_Hidden_By_Default == true) { rng.rowHidden = Rng_Group_Obj.rowHidden }
}
return true;
}
var ws = context.workbook.worksheets.getActiveWorksheet()
var rng = ws.getRange("G:K")
Do_Group_Rng(rng,true,false,true)
var rng = ws.getRange("4:7")
Do_Group_Rng(rng, false, true, true)