Эта функция будет искать столбцы в листах A, B ..., которые соответствуют столбцам в мастере, и добавлять эти данные для имен листов в ColumnA. Неважно, как расположены столбцы в листах. Таким образом, он работает немного медленнее, чем предполагая исправление расположения. Но мне было скучно делать это все время одинаково.
function copyData() {
var ss=SpreadsheetApp.getActive();
var msh=ss.getSheetByName('MainSheet');
var mrg=msh.getRange(1,1,msh.getLastRow(),msh.getLastColumn());
var vA=mrg.getValues();
var hA=vA[0];
var hObj={};
hA.forEach(function(e,i){if(e){hObj[e]=i;}});
vA.forEach(function(row,i){
if(i>0) {
var pA=[];
var sh=ss.getSheetByName(row[hObj['SheetName']]);
var shA=sh.getRange(1,1,1,sh.getLastColumn()).getValues()[0];
var shObj={};
shA.forEach(function(e,i){if(e){shObj[e]=i;}});
row.forEach(function(c,j){
if(shObj.hasOwnProperty(hA[j])) {
pA.push(c);
}
});
sh.appendRow(pA);
}
});
}
Это прямой способ сделать это.
function copyData1() {
var ss=SpreadsheetApp.getActive();
var msh=ss.getSheetByName('MainSheet');
var mrg=msh.getDataRange();
var vA=mrg.getValues();
vA.forEach(function(r,i){
if(i>0) {
var sh=ss.getSheetByName(r[0]);
sh.appendRow([r[1],r[2],r[3]],r[4]);//Modified for more columns
}
});
}