Сбор данных из нескольких листов

Сбор данных из нескольких листов

Как собрать данные из нескольких листов?

Проблема

Необходимо собрать данные из нескольких листов на один лист, как показано на картинке. Обычно тербуется учесть, что существуют загоовки, которые требуется пропустить, а размеры получаемых массивов могут быть разными по ширине.

Решение в общем виде

Необходимо отфильтровать листы, убрав из набора лишние

// Все листы, кроме листа назначения
var sheets = activeSpreasheet.getSheets().filter(function(sheet){
  return sheet.getName() !== destName;
});

Далее нужно просто собрать данные

// Собор данных
for(var i = 0; i < sheets.length; i++){
  var lastRow = sheets[i].getLastRow();
  if(lastRow > 1){
    var values = sheets[i].getRange(2, 1, lastRow - 1, width).getValues();
    result = result.concat(values);
  }
}

Пример скрипта

Универсальное решение

Универсальное решение кажется немного более громоздким. Но его легко приспособить под сбор данных из любых листов, а не толькои из текущей Таблицы. Также оно предусматривает реализацию действий по умолчанию. См. первый пример в листинге.

Ссылки

Обсудите с предпринимателями

Присоединяйтесь к Telegram-чату — здесь предприниматели обсуждают автоматизацию, AI-агентов и рост бизнеса.

→ Войти в чат