I'm currently using the below script which essentially pulls a list of agents from a list then creates new tabs using a template sheet as the basis for the new ones and renames them all as per the list of names.
What I've noticed recently is that when activating the script it appears to hang and not complete yet if I reload the whole web session it has completed.
The Template page has a lot of formulas on it including Query() and Now() statements, could this be slowing it down?
What I want to know is whether the script can be amended in any way to speed things up but I also want the following added to it if possible:
- Once the creation of tabs has been completed, all tabs will be hidden apart from an ADMIN page and the tabs that have just been created. (I Thought I had managed this once but it seems to now have stopped working and I can't see why currently)
function TemplateDuplication() { var ss = SpreadsheetApp.getActiveSpreadsheet(), temp = ss.getSheetByName('Template'), all = ss.getSheetByName('Admin'), sheets = ss.getSheets(), vals = all.getRange('A:A').getValues(); for (var i = 0, len = sheets.length, names = []; i < len; i++) names.push(sheets[i].getName()); for (var i = vals.length - 1; i > 0; i--) { var name = vals[i][0]; if (name != ''&& names.indexOf(name) == -1) { temp.activate(); ss.duplicateActiveSheet() .setName(vals[i][0]); var spreadsheet = SpreadsheetApp.getActive(); spreadsheet.getRange('B1:B1013').activate(); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Stats'), true); spreadsheet.getRange('A:A').activate(); spreadsheet.setCurrentCell(spreadsheet.getRange('A28')); spreadsheet.getActiveSheet().insertColumnsBefore(spreadsheet.getActiveRange().getColumn(), 1); spreadsheet.getActiveRange().offset(0, 0, spreadsheet.getActiveRange().getNumRows(), 1).activate(); spreadsheet.getActiveSheet().deleteColumns(spreadsheet.getActiveRange().getColumn(), spreadsheet.getActiveRange().getNumColumns()); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Admin'), true); spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Template'), true); spreadsheet.getActiveSheet().hideSheet(); } }}