I'm trying to sort a range (3 columns total) by column 2 (Star grade) then by column 3 (level to level) then by column 1 (Bot), here's the current script I'm using to get it to sort by just column 2:
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName("DarkestSpawn");
var range = sheet.getRange("AD12:AF51");
var sortCol=1; // 0 for first column and 1 for second column and so on...
var asc=false; // set variable asc to false for descending sort
function onEdit(e) {
sortrange();
};
function sortrange() {
var activeSheet = ss.getActiveSheet();
var activeRange = activeSheet.getActiveRange();
var sortedValues;
if( sheet.getName() == activeSheet.getName() &&
activeRange.getLastRow() >= range.getRow() &&
activeRange.getRow() <= range.getLastRow() &&
activeRange.getLastColumn() >= range.getColumn() &&
activeRange.getColumn() <= range.getLastColumn() )
{
sortedValues=range.getValues().sort(mySortFunction);
range.setValues(sortedValues);
}
};
var mySortFunction = function(a,b) {
try{x=a[sortCol].toLowerCase();
y=b[sortCol].toLowerCase();}
catch(e){x=a[sortCol];y=b[sortCol];}
return (x>y)?(asc?1:-1):(x<y)?(asc?-1:1):0
};
This is example of a before, then after I want to do:
Ranges have a sort method.