Как выполнить сортировку заданной области на всех листах гугл-таблиц?

Есть рабочий скрипт для сортировки строк фиксированной области по заданному столбцу:

function myFunction() {
    var ss = SpreadsheetApp.getActiveSpreadsheet();
    var range = ss.getSheets()[0].getRange("C9:X24");   // диапозон сортировки
    range.sort({column: 7, ascending: false});          // сортировать по убыванию
}

Он работает на одном листе. Как сделать так, чтобы он работал на всех листах с одним и тем же диапазоном строк и колонкой сортировки?


Ответы (1 шт):

Автор решения: Vitalizzare

У вас уже все есть, осталось добавить один из вариантов обхода страниц. Например:

function myFunction() {
    var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
    var sort_rng = "C9:X24";
    var sort_col = 7;
    var sort_asc = false;
    for (i=0; i<sheets.length; i++) {
        range = sheets[i].getRange(sort_rng);
        range.sort({column: sort_col, ascending: sort_asc}); 
    }
}

Или чуть более прямолинейно:

function myFunction() {
    SpreadsheetApp
    .getActiveSpreadsheet()
    .getSheets()
    .forEach(sh => sh.getRange("C9:X24").sort({column: 7, ascending: false})); 
}
→ Ссылка