Explanation:
You need to make two modifications:
Use getSheets to get all the sheets of your spreadsheet file.
Define a list of sheet names you would like to execute your current solution to:
var selectedSheets = ["Sheet1","Sheet5","Test2"];
Create a for loop (in this case forEach) and iterate over the sheets.
Finally (optional), for every sheet check if the sheet name is included in the selectedSheets
array you defined earlier.
Solution - Run on selected sheets:
Adjust selectedSheets
to include the sheet names for which you want to run the script. Make sure the names match exactly the name of your sheets. No extra spaces or different lower/upper case letters.
function deleteColumns() {
var required = ["Owned", "Set", "Card number", "Edition", "Rarity", "Name", "Card type",];
var selectedSheets = ["Sheet1","Sheet5","Test2"]; // select the sheets you want to run the function for
var sheets = SpreadsheetApp.getActive().getSheets(); // get all sheets
// iterate over all sheets and execute code on selectedSheets
sheets.forEach(sheet=>{
if(selectedSheets.includes(sheet.getName())){
var width = sheet.getLastColumn();
var headers = sheet.getRange(1, 1, 1, width).getValues()[0];
for (var i = headers.length - 1; i >= 0; i--) {
if (required.indexOf(headers[i]) == -1) {
sheet.deleteColumn(i+1);
}
}
}
});
}
Solution - Run on every sheet in the spreadsheet:
function deleteColumns() {
var required = ["Owned", "Set", "Card number", "Edition", "Rarity", "Name", "Card type",];
var sheets = SpreadsheetApp.getActive().getSheets(); // get all sheets
// iterate over all sheets and execute code on selectedSheets
sheets.forEach(sheet=>{
var width = sheet.getLastColumn();
var headers = sheet.getRange(1, 1, 1, width).getValues()[0];
for (var i = headers.length - 1; i >= 0; i--) {
if (required.indexOf(headers[i]) == -1) {
sheet.deleteColumn(i+1);
}
}
});
}