Я пытаюсь создать триггер onEdit для сортировки списка 1 из 2 способов.Способ сортировки списка определяется проверкой данных.Один вариант сортировки (только имя) будет столбец 3 по возрастанию.Второй вариант (Имя и TH) будет сортировать столбец 4 по убыванию, а затем столбец по возрастанию.
В настоящее время у меня есть следующий код, который срабатывает при изменении ячейки проверки данных.Это работает просто отлично, но не позволяет мне выбрать другой способ сортировки данных.
function sortRoster() {
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var roster = activeSheet.getRange("B8:D77");
var sorter = activeSheet.getRange("G4");
roster.sort( [{ column : 4, ascending: false },{ column : 3, ascending: true }] );
var clear = activeSheet.getRange("G4").clearContent().setValue("Do you want to Sort?");
}
function onEdit(e) {
// test if G4 was modified
if (e.source.getActiveSheet() && e.range.rowStart === 4 && e.range.columnStart === 7) {
sortRoster();
}
}
Я попытался сначала добавить другую функцию (вызывая ее sortName()
), которая запускала бы сортировку в столбце 3только.
function sortName() {
var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var roster = activeSheet.getRange("B8:D77");
roster.sort( [{ column : 3, ascending: true }] );
var clear = activeSheet.getRange("G4").clearContent().setValue("Do you want to Sort?");
Затем я попытался изменить if на
if (e.source.getActiveSheet() && activeCell == "Name Only") {
sortName();
sorter.clearContent().setValue("Choose how to Sort?");
} else if (e.source.getActiveSheet() && activeCell == "Name and TH") {
sortRoster();
sorter.clearContent().setValue("Choose how to Sort?");
}
Эта идея не работает, и я не понимаю, почему.
Мне кажется, я не до конца понимаю, кактриггер событий работает даже после моего исследования онлайн.Я видел несколько страниц, таких как этот , которые похожи, но, кажется, не решают ту же проблему, что и я.
Заранее благодарю за помощь и руководство.