Reputation: 29
I have a spreadsheet and need a app script that automatically applies a filter to a specific range and hides values in a defined column.
I have previously used the below script, however, the filter range applies to the entire sheet.
My new requirement is for the filter range to only be applied to a specific range (in this case B3:L)
function setFilter() {
var ss = SpreadsheetApp.getActive();
var tab = ss.getSheetByName("Sheet1")
var filter = {};
filter.range = {
sheetId: tab.getSheetId()
};
filter.criteria = {};
// Which column to add the filter to
var columnIndex = 0;
filter['criteria'][columnIndex] = {
'hiddenValues': ["✘"]
};
var request = {
"setBasicFilter": {
"filter": filter
}
};
Sheets.Spreadsheets.batchUpdate({'requests': [request]}, ss.getId());
}
How can I specify the range using this existing script?
I have attempted adding the following, but this does not work:
var range = spreadsheet.getRange("B3:L")
Upvotes: 0
Views: 2152
Reputation: 201613
I believe your goal is as follows.
✘
, you want to hide the row.In order to achieve your goal, when your showing script is modified, how about the following modification?
function setFilter() {
var ss = SpreadsheetApp.getActive();
var tab = ss.getSheetByName("Sheet1")
var filter = {};
filter.range = {
sheetId: tab.getSheetId(),
startRowIndex: 2,
startColumnIndex: 1,
endColumnIndex: 12
};
filterSpecs = [];
for (var i = filter.range.startColumnIndex; i <= filter.range.endColumnIndex; i++) {
filterSpecs.push({ columnIndex: i, filterCriteria: { hiddenValues: ["✘"] } });
}
filter.filterSpecs = filterSpecs;
var request = {
"setBasicFilter": {
"filter": filter
}
};
Sheets.Spreadsheets.batchUpdate({ 'requests': [request] }, ss.getId());
}
hiddenValues: ["✘"]
to each column.✘
, the row is hidden. And, the basic filter is set to "B3:L".Upvotes: 2