Я пытаюсь создать электронную таблицу, которая сортирует список заданий по дате их выполнения, просто установив флажок и пометив его как true. Я очень новичок в JavaScript и использовании электронных таблиц, но у меня есть некоторый опыт программирования, в основном Java и Python.
Мой код пока таков. Флажок находится в левом верхнем углу (ячейка A1), и у меня есть даты в столбце C (столбец 3). Там много неиспользуемых переменных и других лишних вещей, потому что я скопировал некоторые строки из других мест и постов. На данный момент он ничего не делает, когда я нажимаю флажок. Не знаю, что делает половина этого, поэтому любые советы приветствуются. Только не жарь меня слишком сильно, плз, ха-ха
function SortbyCheck(input) {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getRange("A3:E");
const DateRange = [A3:E]
// Sorts by the values in the second column (B)
//range.sort(3);
if(s.getName() == "Sheet1" && r.getColumn() == 1 && r.getRow() == 1 && r.getValue() == true) {
// Sorts descending by column B
DateRange.sort(3);
}
}
3 ответа
Даллин, вот она, модифицированная функция. Вы должны установить устанавливаемый триггер, как указано в Ping, или вы должны назвать свою функцию onEdit. Здесь у вас есть образец того, что, как я понимаю, вам нужно:
function onEdit(e) {
var eran = e.range
var sheet = eran.getSheet()
var sortingrange = sheet.getRange("A3:E");
if(sheet.getName() == "Sheet1" && eran.getColumn() == 1 && eran.getRow() == 1 && eran.getValue() == true) {
sortingrange.sort({column: 2, ascending: false}) //sorting by B descending
eran.setValue(false) //unticks the checkbox
}
}
Альтернатива флажку...
Вставьте прозрачные рисунки поверх заголовков столбцов, чтобы использовать их в качестве кнопок для активации скрипта сортировки:
function sortDatePUlog() {
var shPUlog = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PU Log');
shPUlog.getRange("B3:F3").setFontColor('#ffffff');
shPUlog.getRange("A3").setFontColor('#f388f3');
shPUlog.sort(1, false); //false puts newest date on top
}
function sortCustNamePUlog() {
var shPUlog = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('PU Log');
shPUlog.getRange("B3:F3").setFontColor('#ffffff');
shPUlog.getRange("C3").setFontColor('#f388f3');
shPUlog.sort(3, true);
}
function onEdit(e) {
var sh = e.range.getSheet()
if(sheet.getName() == "Sheet1" && e.range.columnStart == 1 && e.range.rowStart == 1 && e.value == "TRUE") {
sh.getRange("A3:E" + sh.getLastRow()).sort({column: 2, ascending: false});
e.range.setValue("FALSE");
}
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript/JS) и его различных диалектах/реализациях (кроме ActionScript). Имейте в виду, что JavaScript — это НЕ то же самое, что Java! Включите все ярлыки, относящиеся к вашему вопросу; например, [node.js], [jQuery], [JSON], [ReactJS], [angular], [ember.js], [vue.js], [typescript], [svelte] и т. д.