Быстрое объединение нескольких листов Google в один лист - PullRequest
0 голосов
/ 17 января 2019

У меня есть лист Google, где у меня есть еще около 50-60 вкладок.Все данные на этих листах представлены в одном формате, мне просто нужно объединить их в основную электронную таблицу.Я попробовал второй ответ здесь , но он выдает ошибку с превышением лимита времени.Он довольно медленный, потому что вставляет каждую строку, поэтому он превышает ограничение по времени.Я пытаюсь использовать для этого функции getValues и setValues, но у меня возникают проблемы с выяснением того, как добавлять после lastRow и lastColumn.Вот код -

var ss = SpreadsheetApp.getActiveSpreadsheet();
var All = ss.insertSheet("MergedMasterSheet");
function TotalsSheet() {
   var sheets = ss.getSheets();
   for (var i=0; i < sheets.length; i++) 
    {
     var sheet = sheets[i];
     var range = sheet.getDataRange();
     var values = range.getValues();
     var lastrow = All.getLastRow();
     var lastcolumn = All.getLastColumn();
    // All.getRange().setValues(values) here is the problem with the 
    getRange() function
  } 
 }

1 Ответ

0 голосов
/ 17 января 2019

вы можете записать все данные в один массив, а затем записать этот массив в «MergedMasterSheet». Посмотрите, работает ли это:

function TotalsSheet() {
var ss, merged, array;
ss = SpreadsheetApp.getActiveSpreadsheet();
merged = ss.getSheetByName("MergedMasterSheet")

//create sheet if it doesn't exist, else clear all content
merged = !merged ? ss.insertSheet("MergedMasterSheet") : merged.clear();

//create a 2D-array containing all data of all sheets, except the sheet for the merged data
ss.getSheets().forEach(function (sh, i) {
    if(sh.getName() !== "MergedMasterSheet") {
    array = (i == 0) ? sh.getDataRange().getValues() : array.concat(sh.getDataRange().getValues())
    }
})

//filter out rows with no value in first column
array = array.filter(function (r) {
    return r[0];
})

//write everything to the merged sheet in one call
merged.getRange(1, 1, array.length, array[0].length).setValues(array)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...