How are you? I'm working on Google Apps Script and what I want to achieve is to set the filter on the selected cells with the criteria I need. However, even though I specify the filter, the desired criteria are not being established. Does anyone know what might be causing this?
Here it's the code:
var headersRange = sheet.getRange("M5:X5");
headersRange.createFilter();
// Filtrar en la columna S5 por valores mayores al 60%
var filterCriteria = SpreadsheetApp.newFilterCriteria().GreaterThan(0.6).build();
var filter = headersRange.getFilter();
filter.setColumnFilterCriteria(19, filterCriteria); // Columna S
// Filtrar en la columna T5 por valores entre -50% y 50%
var filterCriteriaT = SpreadsheetApp.newFilterCriteria()
.NumberGreaterThan(-0.5)
.NumberLessThan(0.5)
.build();
filter.setColumnFilterCriteria(20, filterCriteriaT); // Columna T
// Ordenar la columna S5 de Z a A
headersRange.sort([{column: 19, ascending: false}]);
Filter Criteria
Filter in column S5:S for values greater than 60%
Filter in column T5:T by values between -50% and 50%
Sort column S5:S from Z to A (ascending false)
From your updated question, how about the following sample script?
Please set your sheet name.
function myFunction() {
const sheetName = "Sheet1"; // Please set your sheet name.
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(sheetName);
const filter = sheet.getFilter();
if (filter) {
filter.remove();
}
sheet
.getRange("S5:T")
.createFilter()
.setColumnFilterCriteria(19, SpreadsheetApp.newFilterCriteria().whenNumberGreaterThan(0.6).build())
.setColumnFilterCriteria(20, SpreadsheetApp.newFilterCriteria().whenNumberGreaterThan(-0.5).whenNumberLessThan(0.5).build());
sheet.getRange("M5:X").sort({ column: 19, ascending: false });
}
.whenNumberGreaterThan(0.6)
might be .whenNumberGreaterThanOrEqualTo(0.6)
?.whenNumberGreaterThan(-0.5).whenNumberLessThan(0.5)
might be .whenNumberGreaterThan(0.5).whenNumberLessThan(-0.5)
or whenNumberBetween(-0.5, 0.5)
or whenNumberBetween(0.5, -0.5)
?headersRange.sort([{column: 19, ascending: false}]);
where headersRange
is sheet.getRange("M5:X5");
, in this case, that is sheet.getRange("M5:X").sort([{column: 19, ascending: false}]);
or sheet.getDataRange().sort({column: 19, ascending: false});
?