Skip to content

Instantly share code, notes, and snippets.

@justislav
Created June 6, 2018 09:27
Show Gist options
  • Save justislav/092ac3375ceb3866126da11a0b7c274d to your computer and use it in GitHub Desktop.
Save justislav/092ac3375ceb3866126da11a0b7c274d to your computer and use it in GitHub Desktop.

Revisions

  1. justislav created this gist Jun 6, 2018.
    52 changes: 52 additions & 0 deletions groupTree.gs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,52 @@
    /** @OnlyCurrentDoc */

    function getGroup(sheet, rowIndex) {
    var groupDepth = sheet.getRowGroupDepth(rowIndex);
    if (groupDepth) return sheet.getRowGroup(rowIndex, groupDepth)
    else return null
    }

    function remove_all_groups() {
    var spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getActiveSheet();
    var endRow = sheet.getLastRow();

    for (var row = 1; row <= endRow; row++) {
    var group = getGroup(sheet, row);
    while (group) {
    group.remove();
    group = getGroup(sheet, row);
    }
    }
    };

    function group_rows() {

    remove_all_groups();

    var spreadsheet = SpreadsheetApp.getActive();
    var sheet = spreadsheet.getActiveSheet();
    var endRow = sheet.getLastRow();
    var endCol = sheet.getLastColumn();

    var row = 10;
    var new_group_row = 10;
    while (row <= endRow) {
    var new_group = ! sheet.getRange(row, 1).isBlank()


    if (new_group) {
    if (row - new_group_row > 2) {

    // sheet.getRange(row-2,2).setValue(new_group_row);

    sheet.getRange(new_group_row+1, 1, row - new_group_row - 1).shiftRowGroupDepth(1);

    getGroup(sheet,new_group_row+1).collapse();
    }
    new_group_row = row
    }

    row++;
    }
    };