1
votes

Happy new year.

Having some trouble getting some code to fire off correctly. I'm working in a budget sheet that has an overview sheet where information is pulled in from most of the other sheets, however since there are individual sheets for each month as well as a few more, it gets a little hectic trying to keep track of all the sheets. I started manually hiding/showing the sheets to make things easier, but once I was able to automate the hiding/showing of months on the overview page, I thought it would be best if the sheets were automated as well. That led me to the code I currently have in place which looks like this:

function onEdit(e) {

var sheet = e.source.getActiveSheet();
var ss = SpreadsheetApp.getActiveSpreadsheet();
var January = ss.getSheetByName("January");
var February = ss.getSheetByName("February");
var March = ss.getSheetByName("March");
var April = ss.getSheetByName("April");
var May = ss.getSheetByName("May");
var June = ss.getSheetByName("June");  
var July = ss.getSheetByName("July");
var August = ss.getSheetByName("August");
var September = ss.getSheetByName("September");
var October = ss.getSheetByName("October");
var November = ss.getSheetByName("November");
var December = ss.getSheetByName("December");

  if (e.range.getA1Notation() !== 'A29' || sheet.getName() !== 'Overview') return;
switch (e.value) {
case 'All':
    sheet.showColumns(3, 24)
    January.showsheet();
    February.showsheet();
    March.showsheet();
    April.showsheet();
    May.showsheet();
    June.showsheet();
    July.showsheet();
    August.showsheet();
    September.showsheet();
    October.showsheet();
    November.showsheet();
    December.showsheet();    
    break;
case 'January':
    sheet.hideColumns(3, 24);
    sheet.showColumns(3, 2);
    January.showsheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'February':
    sheet.hideColumns(3, 24);
    sheet.showColumns(3, 4);
    January.hidesheet();
    February.showsheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'March':
    sheet.hideColumns(3, 24);
    sheet.showColumns(5, 4); 
    January.hidesheet();
    February.hidesheet();
    March.showsheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'April':
    sheet.hideColumns(3, 24);
    sheet.showColumns(7, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.showsheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'May':
    sheet.hideColumns(3, 24);
    sheet.showColumns(9, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.showsheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'June':
    sheet.hideColumns(3, 24);
    sheet.showColumns(11, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.showsheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'July':
    sheet.hideColumns(3, 24);
    sheet.showColumns(13, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.showsheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'August':
    sheet.hideColumns(3, 24);
    sheet.showColumns(15, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.showsheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'September':
    sheet.hideColumns(3, 24);
    sheet.showColumns(17, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.showsheet();
    October.hidesheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'October':
    sheet.hideColumns(3, 24);
    sheet.showColumns(19, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.showsheet();
    November.hidesheet();
    December.hidesheet();
    break;
case 'November':
    sheet.hideColumns(3, 24);
    sheet.showColumns(21, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.showsheet();
    December.hidesheet();
    break;
case 'December':
    sheet.hideColumns(3, 24);
    sheet.showColumns(23, 4); 
    January.hidesheet();
    February.hidesheet();
    March.hidesheet();
    April.hidesheet();
    May.hidesheet();
    June.hidesheet();
    July.hidesheet();
    August.hidesheet();
    September.hidesheet();
    October.hidesheet();
    November.hidesheet();
    December.showsheet();
    break;
}
}

For some reason it's not quite working. Not sure what I'm doing wrong. I'm not very experienced when it comes to coding, so I'm sure it's probably something super simple. Here's a link to a blank copy of the document I made with the code in tact.

Script Test - Please Help

I'm open to suggestions, thanks in advance.

1
The script isn't complete. Is it an onEdit(e) function? - Rubén
You're right, I left the first line of the code out by mistake, but it was on the script for the document. My mistake. - Alexander Moore

1 Answers

3
votes

There are typos. Instead of showsheet(), it should be showSheet(). In the same way, instead of hidesheet(), it should be hideSheet().