I am trying to make sure sorting happens at the end of a script without adding a sleep function. having issues getting this to fire last. I need sorting to happen last so the sheet has time to finalize all other functions, otherwise i'm ending up with conditional formatting errors.
else if(s.getName() == "Pending Orders" && r.getColumn() == 20 && r.getValue() == "Shipped Partial Order") {
if (s.getLastRow() + 10 > s.getMaxRows()) {
s.insertRowsAfter(s.getLastRow(), (s.getLastRow() + 10) - s.getMaxRows());
}
var row = r.getRow();
var numColumns = s.getLastColumn();
s.getRange(e.range.getRow(), 12).setValue('Partial Ship');
if(!s.getRange(e.range.getRow(), 18).getValue()) {
s.getRange(e.range.getRow(), 18).setValue(new Date())
}
var targetSheet = ss.getSheetByName("Partial Shipped");
if(targetSheet.getLastRow() + 10 > targetSheet.getMaxRows()) {
targetSheet.insertRowsAfter(targetSheet.getLastRow(), (targetSheet.getLastRow() + 11) - targetSheet.getMaxRows());
}
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
s.getRange(row, 1, 1, numColumns).copyTo(target);
s.getRange(row, 1, 1, numColumns).clearContent();
s.getRange(row, 1, 1, numColumns).setBorder(true,false,false,false,false,false);
var arr = s.getDataRange().getValues();
for(var i=arr.length-1; i >=0; i--) {
Logger.log(arr[i][0].toString());
if(arr[i][0].toString() == '') {
Logger.log('Deleting row ' + i);
s.deleteRow(i+1);
}
}
function sortRange(sheet, range, col) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var range = ss.getActiveRange();
var targetSheet = ss.getSheetByName("Partial Shipped");
var target = targetSheet.getRange(targetSheet.getLastRow() + 1, 1);
sheet.getRange(range).sort({column: 14, ascending: true}); // Is this done correctly?
sortRange(targetSheet, target, 14 );
}
SpreadsheetApp.getUi().alert('Partial Order Shipped.');
}