I currently use an onEdit
function to assist in sorting a sheet. The sheet sorts when a value is entered into column A but I would prefer the sheet to sort after all values in columns A-F have been entered, due to my lack of coding knowledge I need help on this.
var SORT_COLUMN_INDEX = 2;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 1;
var activeSheet;
function autoSort(sheet) {
var range = sheet.getDataRange();
if (NUMBER_OF_HEADER_ROWS > 0) {
range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
}
range.sort( {
column: SORT_COLUMN_INDEX,
ascending: ASCENDING
} );
}
function onEdit(event) {
var editedCell;
activeSheet = SpreadsheetApp.getActiveSheet();
editedCell = activeSheet.getActiveCell();
if (editedCell.getColumn() == SORT_COLUMN_INDEX) {
autoSort(activeSheet);
}
}
function onOpen(event) {
activeSheet = SpreadsheetApp.getActiveSheet();
autoSort(activeSheet);
}
function onInstall(event) {
onOpen(event);
}
SORT_COLUMN_INDEX
that specifies by which column the sheet shall be sorted and TRIGGER_COLUMN_INDEX
that specifies after the edit of which column function autoSort
shall be called.You can modify your code as following:
var SORT_COLUMN_INDEX = 1;
var TRIGGER_COLUMN_INDEX = 6;
var ASCENDING = true;
var NUMBER_OF_HEADER_ROWS = 1;
var activeSheet;
function autoSort(sheet) {
var range = sheet.getDataRange();
if (NUMBER_OF_HEADER_ROWS > 0) {
range = range.offset(NUMBER_OF_HEADER_ROWS, 0);
}
range.sort( {
column: SORT_COLUMN_INDEX,
ascending: ASCENDING
} );
}
function onEdit(event) {
var editedCell;
activeSheet = SpreadsheetApp.getActiveSheet();
editedCell = activeSheet.getActiveCell();
if (editedCell.getColumn() == TRIGGER_COLUMN_INDEX) {
Logger.log('column '+editedCell.getColumn()+' edited');
autoSort(activeSheet);
}
else{
Logger.log('other column edited');
}
}
function onOpen(event) {
activeSheet = SpreadsheetApp.getActiveSheet();
autoSort(activeSheet);
}
//Sure that you need the following function?
function onInstall(event) {
onOpen(event);
}