根据筛选的范围将数据从电子表格复制到另一个电子表格



我有这个脚本,可以将整个内容从源电子表格复制到目标电子表格。但我只想从内容为"意大利"的另一列(C列(中复制一个特定的列(B列(。

function CopyDataToNewFile() {
var sss = SpreadsheetApp.openById('1jtZli...'); // sss = source spreadsheet
var ss = sss.getSheetByName('Sorgente'); // ss = source sheet
//Get full range of data
var SRange = ss.getDataRange();
//get A1 notation identifying the range
var A1Range = SRange.getA1Notation();
//get the data values in range
var SData = SRange.getValues();
var tss = SpreadsheetApp.openById('185I...'); // tss = target spreadsheet
var ts = tss.getSheetByName('Destinazione'); // ts = target sheet
//set the target range to the values of the source data
ts.getRange(A1Range).setValues(SData);
}

我得出了这个结论。目标工作表中有一种方法(其中有来自源工作表的数据验证(,其中数据验证仅显示尚未插入目标工作表的值?

试试这个:

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的每一行与字符串"Italy"进行比较。如果列C等于"Ital",则in会追加列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 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]]);
}
});  
}

相关内容

最新更新