I have a workbook with several sheets. I also have a custom menu that is suppose to enable any user to hide/show certain columns and rows. I do not want anyone (other than me) to have the ability to edit the sheet. I "Protected" the sheet so that only I have "Edit" access. The show/hide function works perfectly for me.
However, whenever a user tries it, it fails. I need the show/hide functionality to work for those that do not have edit access. I tried using the "Warning Only", but obviously, that still enables them to edit.
Any thoughts on how I can accomplish this?
My code is simple:
function showPercents() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet() //var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); //for (var j = 0; j < sheets.length ; j++ ) { // var sheet = sheets[j]; var sheetname = sheet.getSheetName(); if (sheetname != 'Charts' && sheetname != 'DataIn' && sheetname != 'Config') { var numofcolumns = sheet.getLastColumn(); var i = 3; while (i < numofcolumns - 1) { sheet.showColumns(i) sheet.showColumns(i+2) sheet.showColumns(i+4) sheet.showColumns(i+5) sheet.showColumns(i+7) sheet.showColumns(i+9) sheet.showColumns(i+10) i = i + 11 } } //} } function hidePercents() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet() //var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets(); //for (var j = 0; j < sheets.length ; j++ ) { // var sheet = sheets[j]; var sheetname = sheet.getSheetName(); if (sheetname != 'Charts' && sheetname != 'DataIn' && sheetname != 'Config') { var numofcolumns = sheet.getLastColumn(); var i = 3; while (i < numofcolumns - 1) { sheet.hideColumns(i) sheet.hideColumns(i+2) sheet.hideColumns(i+4) sheet.hideColumns(i+5) sheet.hideColumns(i+7) sheet.hideColumns(i+9) sheet.hideColumns(i+10) i = i + 11 } } //} }