I would like to implement a script into my sheet that checks if the value in a cell is TRUE or FALSE, and as long as it's TRUE a specified range shall become sorted automatically each time a cell in the sheet is modified. Furthermore, I would like to be able to decide whether the range will be sorted ascending or descending via a drop-down menu.
As for the "auto sort" part I've found this piece of code:
function onEdit(event){
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 4;
var tableRange = "B3:E9";
if(editedCell.getColumn() == columnToSortBy){
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy } );
}
}
This works just fine.
Now, I tried to add my conditionals as follows and it stopped working.
Can you help me to understand what's wrong here?
function onEdit(event) {
var sortCheck = "G21"; // This cell contains a check box
if(sortCheck == "TRUE"){ // so its value is either TRUE or FALSE
var sheet = event.source.getActiveSheet();
var editedCell = sheet.getActiveCell();
var columnToSortBy = 4;
var tableRange = "B3:M18";
var sortOrder = "G22"; // This cell contains the drop-down menu
// where the user chooses "ascending" or "descending"
if(sortOrder == "descending"){
var sortOrder = false
} else if(sortOrder == "ascending"){
var sortOrder = true
}
var range = sheet.getRange(tableRange);
range.sort( { column : columnToSortBy,ascending: sortOrder } );
}
}