11

I found code to list the names of all the sheets in Google Sheets (from here):

function SheetNames() { // Usage as custom function: =SheetNames( GoogleClock() )
try {
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets()
  var out = new Array( sheets.length+1 ) ;
  //out[0] = [ "Name" , "gid" ];
  for (var i = 1 ; i < sheets.length+1 ; i++ ) out[i] = [sheets[i-1].getName()];
  return out
}
catch( err ) {
  return "#ERROR!" 
}
}

My question is how can I modify the script to skip the first two sheet names and begin populating the list in the cell where the script is called?

I tried changing the var i = 1 to var i = 3 and that did skip the first two sheet names but it also created to blank cells. How do I skip the first two sheet names and not create any blank cells?

Community
  • 1
  • 1
Nathan
  • 1,483
  • 3
  • 18
  • 41

1 Answers1

11

You had the right idea, but your output array was placing the first item in position 3. Instead, do this:

for (var i = 3 ; i < sheets.length+1 ; i++ ) out[i-2] = [sheets[i-1].getName()];
Andrew Kozak
  • 1,631
  • 2
  • 22
  • 35
ScampMichael
  • 3,688
  • 2
  • 16
  • 23