Создайте сценарий для применения пользовательского диапазона сортировки к листу Google

#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:

Помимо решений, которые уже были упомянуты, вы также можете:

Создайте свою собственную «кнопку» и назначьте ей скрипт:

  1. Перейдите в раздел Вставка > >Рисунок и создайте свою кнопку

чертеж, вставленный в электронную таблицу

  1. Назначьте ему скрипт и введите имя функции, которая в конечном итоге сортирует ваши данные

назначить сценарий для рисования

  1. Теперь у вас есть кнопка, которая сортирует ваши данные!

Создайте пользовательское меню с помощью onOpen триггера

Вы можете использовать onOpen триггер сценария приложений для создания пользовательского меню в своей электронной таблице. Это в основном означает, что каждый раз при открытии электронной таблицы будет создаваться новое пользовательское меню, которое будет выглядеть примерно так:

пользовательское меню

Что касается кода для этого, он в конечном итоге будет более или менее соответствовать этой структуре:

 function onOpen(e) {
  SpreadsheetApp.getUi() 
      .createMenu('Sorting Menu')
      .addItem('Sorting A-Z', 'sortAZ')
      .addToUi();
}

function sortAZ() {
  //function to sort your data
}
 

Ссылка