Google Таблицы - Цикл по Таблицам, объединяющим данные

Мне нужна небольшая помощь, перебирая листы в Google.

Сценарий - у меня около 20 вкладок с одинаковым макетом, мне нужно собрать информацию со всех из них и поместить на 1 мастер-лист. Данные начинаются со строки 2 (заголовки) и могут иметь переменную длину (при необходимости конечный столбец - столбец "Z").

Код может либо создать новую вкладку для размещения всех данных, либо я могу создать конкретную вкладку.

(возможно, потребуется принять во внимание, что мне не нужно включать некоторые листы - я могу их определить)

В Excel это будет просто Создать новую вкладку (Сводная информация) Перебирать вкладки Если имя вкладки отсутствует в моем списке исключений, скопируйте диапазон на лист (динамический диапазон) Поместите диапазон в следующую доступную строку на вкладке Сводка. Повторяйте до тех пор, пока не будет сделано.

Любая помощь приветствуется


person Redex    schedule 03.01.2017    source источник


Ответы (1)


В случае, если у кого-то еще есть подобные проблемы, мне удалось самостоятельно проработать код (может быть, не самым быстрым, но он выполняет свою работу)

function LoopSheetsMergeData(){
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
var destsheet = ss.getSheetByName("Summary");//MasterSheet To Merge To
var StartRow = 4//StartRow on all tabs
var StartCol = 1//AllData starts in Column 1  
var EndCol = 26//End Column of all data  
for (var s in allsheets){
    var sheet=allsheets[s]
    if (sheet.getName() == "Summary") //Disregard certain tabs
    {      
    }
    else
    {    
var EndRow = sheet.getLastRow();
var copyRng = sheet.getRange(StartRow,StartCol,EndRow,EndCol);
var destlastRow = destsheet.getLastRow();
var nextRow = destlastRow +1 
var shtname = sheet.getName(); 
copyRng.copyTo(destsheet.getRange(nextRow,2));//Row and Column of where to paste the information  
var newLastRow = destsheet.getLastRow();//New last Row after pasting the data
destsheet.getRange(nextRow,1,newLastRow,1).setValue(shtname&&newLastRow);//Insert into column 1 for each row copied the name of the sheet it came from      
    }
  }//end of  sheets loop.
}// end of function...

person Redex    schedule 05.01.2017