#google-apps-script #google-sheets
Вопрос:
У меня есть страница Google, содержащая несколько сотен событий. Я регулярно меняю сортировку по мере работы, но «окончательный» порядок сортировки-по стране > Региону >> Городу >>> Дате начала (определяется заголовками столбцов с одинаковыми названиями).
Я могу применить это с помощью команды Данные > Диапазон сортировки, но мне интересно, можно ли создать скрипт или «кнопку», которая может запускать эту функцию для меня?
Комментарии:
1. developers.google.com/apps-script/reference/spreadsheet/…
Ответ №1:
Вы можете «записать» это самостоятельно, используя пункт меню Инструменты>Макросы>>Записать макрос.
Затем его можно сохранить, чтобы вы могли запускать его в любое удобное для вас время.
Комментарии:
1. В то время как другие решения, вероятно, также работают, это было самым простым и легким. Спасибо @MattKing.
Ответ №2:
function sort() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName('Sheet Name');
const headerrow = 1;
const hA = sh.getRange(headerrow, 1, 1, sh.getLastColumn()).getValues()[0];
const startrow = 2;
let col = {};
hA.forEach((h, i) => { col[h] = i 1 });
sh.getRange(startrow, 1, sh.getLastRow(), sh.getLastColumn()).sort([{ column: col['Country'], ascending: true }, { column: col['Region'], ascending: true }, { column: col['City'], ascending: true }, { column: col['Start Date'], ascending: true }]);
}
Ответ №3:
Помимо решений, которые уже были упомянуты, вы также можете:
Создайте свою собственную «кнопку» и назначьте ей скрипт:
- Перейдите в раздел Вставка > >Рисунок и создайте свою кнопку
- Назначьте ему скрипт и введите имя функции, которая в конечном итоге сортирует ваши данные
- Теперь у вас есть кнопка, которая сортирует ваши данные!
Создайте пользовательское меню с помощью onOpen
триггера
Вы можете использовать onOpen
триггер сценария приложений для создания пользовательского меню в своей электронной таблице. Это в основном означает, что каждый раз при открытии электронной таблицы будет создаваться новое пользовательское меню, которое будет выглядеть примерно так:
Что касается кода для этого, он в конечном итоге будет более или менее соответствовать этой структуре:
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('Sorting Menu')
.addItem('Sorting A-Z', 'sortAZ')
.addToUi();
}
function sortAZ() {
//function to sort your data
}