Попробуйте:
function CopyDataToNewFile() {
var sss = SpreadsheetApp.openById('1jtZli...');
var ss = sss.getSheetByName('Sorgente');
var SRange = ss.getDataRange();
var A1Range = SRange.getA1Notation();
var SData = SRange.getValues();
var B=[];
SData.forEach(function(r){
if(r[2]=='Italy') {
B.push([r[1]]);
}
});
var tss = SpreadsheetApp.openById('185I...');
var ts = tss.getSheetByName('Destinazione');
ts.getRange(1,1,B.length,1).setValues(B);
}
Вот несколько способов, которыми вы можете играть. Я думаю, что первый будет намного быстрее.
Первый получает все данные одновременно и записывает выходные данные одновременно.
function Copy() {
var ss=SpreadsheetApp.openById('source spreadsheet id')
var ssh=ss.getSheetByName('sorg');
var dss=SpreadsheetApp.openById('destination spreadsheet id')
var dsh=dss.getSheetByName('dest')
var srg=ssh.getRange(1,1,ssh.getLastRow(),ssh.getLastColumn());
var svA=srg.getValues();
var oA=[];
svA.forEach(function (r,i) {
if (r[2]=='Italy') {
oA.push([r[1]]);
}
});
dsh.getRange(dsh.getLastRow()+1,1,oA.length,1).setValues(oA);
}
Второй получает столбец B и столбец C и сравнивает каждую строку столбца C со строкой «Италия», если столбец C равен «Италия», а затем добавляет эту же строку столбца В, чтобы выполнить намного больше операций записи и еще одного чтения.
function Copy() {
var ss=SpreadsheetApp.openById('source spreadsheet id');
var ssh=ss.getSheetByName('sorg');
var dss=SpreadsheetApp.openById('destination spreadsheet id');
var dsh=dss.getSheetByName('dest');
var srgB=ssh.getRange(1,2,ssh.getLastRow());//col B
var srgC=ssh.getRange(1,3,ssh.getLastRow());//col C
var BvA=srgB.getValues();
var CvA=srgC.getValues();
var oA=[];
BvA.forEach(function (r,i) {
if(CvA[i][0]=='Italy') {
dss.appendRow([BvA[i][0]]);
}
});
}