#sorting #google-apps-script #google-sheets #spreadsheet
Вопрос:
У меня есть таблица gsheet со столбцами: version, valueA
Я написал функцию приложения-скрипта, которая сравнивает две версии.
Как я могу использовать этот пользовательский кооператор для сортировки всей таблицы в соответствии с этим компилятором?
function sortAnalyticsVersionsDesc() {
var versions = activeSpreadsheet.getRangeByName(MY_RANGE).getValues().filter(item => item[0] != "");
versions.sort(_compareVer);
}
Я хочу valueA
, чтобы они были отсортированы соответствующим образом.
sortSpecObj The columns to sort by
не предоставляет возможности предоставить пользовательскую функцию сортировки.
Мне нужно скопировать всю таблицу в память? Но даже тогда — как мне отсортировать матрицу?
Комментарии:
1. developers.google.com/apps-script/reference/spreadsheet/…
2. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
3.
sortSpecObj Object The columns to sort by.
не дает возможности предоставить пользовательскую функцию сортировки.4. @Купер, спасибо, но ваши ссылки не отвечают на мой вопрос
5. Вторая ссылка включает обсуждение функции сравнения для сортировки массивов. Если вы хотите отсортировать двумерный массив, вам придется создать функцию сравнения для ваших конкретных потребностей. Возможно, вы захотите включить JavaScript в свой список тегов.
Ответ №1:
function sortAnalyticsVersionsDesc() {
var lines = activeSpreadsheet.getRangeByName(ANALYTICS_DATA_TABLE).getValues().filter(item => item[0] != "");
lines = lines.sort(_compareLinesWithVer);
activeSpreadsheet.getRangeByName(ANALYTICS_DATA_TABLE).setValues(lines)
}
function _compareLinesWithVer(a, b) {
return _compareVer(a[2], b[2]);
}
function _compareVer(a, b) {