'How to run a macro on protected cells? [duplicate]
I'm trying to allow my staff to run a Macro I built on sheets that I have protected so they don't break the sheet itself. Here is the Macro:
function InventoryLog1() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A14').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive transfer'), true);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('InventoryArchive'), true);
spreadsheet.getRange('A2').activate();
var Insertrownumber = spreadsheet.getRange('l1').getValue()
spreadsheet.getActiveSheet().insertRowsBefore(spreadsheet.getActiveRange().getRow(), Insertrownumber);
spreadsheet.getActiveRange().offset(0, 0, 1, spreadsheet.getActiveRange().getNumColumns()).activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive transfer'), true);
spreadsheet.getRange('A2:G1000').activate();
spreadsheet.getRange('A2:G1000').createFilter();
spreadsheet.getRange('A2').activate();
var criteria = SpreadsheetApp.newFilterCriteria()
.setHiddenValues([''])
.build();
spreadsheet.getActiveSheet().getFilter().setColumnFilterCriteria(2, criteria);
spreadsheet.getRange('A2:G1000').activate();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('InventoryArchive'), true);
spreadsheet.getRange('A2').activate();
spreadsheet.getRange('\'Archive transfer\'!A2:G1000').copyTo(spreadsheet.getActiveRange(), SpreadsheetApp.CopyPasteType.PASTE_VALUES, false);
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Day\'s Inventory'), true);
spreadsheet.getRange('A3:J201').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('a1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.getRange('G1').activate();
spreadsheet.getActiveRangeList().clear({contentsOnly: true, skipFilteredRows: true});
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive transfer'), true);
spreadsheet.getActiveSheet().getFilter().remove();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('InventoryArchive'), true);
spreadsheet.getActiveSheet().hideSheet();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Archive transfer'), true);
spreadsheet.getActiveSheet().hideSheet();
spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Day\'s Inventory'), true);
spreadsheet.getRange('a1').activate();
};
Can someone help me with making this macro able to run from any user who has access to the sheet even if they do not have the ability to edit protected cells?
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
