Skip to content
Advertisement

How can i skip “undefined”?

I want to create a script, which will be grouping all not empty rows. But, i have problem with checking getDepth or getRange when group doesn’t exist. I get “undefined” and i can’t create easy check like “if getDepth < 0 or “undefined”” because script stopping. Few years ago i created many scripts on VBA but this Apps Scripts a little bit hard for me, I’m newbie here) Can anyone help me?)

function Grouping() {
    var i = 2;
    var j = 1;
    var count = 0;
    let firstCellCount = 0;
    var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
    
    for (; i < lastRow + 1; i++) {
    var curCell = SpreadsheetApp.getActiveSheet().getRange(i, 1).getValue();
    var firstCell = SpreadsheetApp.getActiveSheet().getRange(i - 1, 1).getValue();
    var lastCell = SpreadsheetApp.getActiveSheet().getRange(i + 1, 1).getValue();
    
    let a = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRowGroup(i, 1).getDepth();
    
    if (a < 1) {
    
        if (curCell !== "" && firstCell == "") {
          firstCellCount = i;
        }
        if (curCell !== "") {
          count = count + 1;
        }
        if (curCell !== "" && lastCell == "") {
          SpreadsheetApp.getActiveSheet().getRange(firstCellCount + 1, 1, count).activate().shiftRowGroupDepth(1);
          count = 0;
          firstCellCount = 0;
        }
      }
    }
    }

Advertisement

Answer

It’s not clear how are you getting "undefined", anyway, Sheet.getRowGroup() throws an exception if the group doesn’t exist:

h:mm:ss AM/PM   Error   
Exception: A row group does not exist with index 1 and group depth 1
myFunction  @ Code.gs:2

Considering the above you might use try..catch

try{
  const group = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0].getRowGroup(i, 1);
  // add here whatever you want to do with the group
} catch(error){ 
  // add here something that you want to do when a exception occurs
} 
// add here something that you want to do after handling the group that doesn't need a group

Resources

User contributions licensed under: CC BY-SA
10 People found this is helpful
Advertisement