如果值同时存在于工作表1和工作表2中,则复制行,并将其粘贴到工作表3.谷歌表格.谷歌应用程序脚本



我在脚本的某个部分需要帮助。我在第一张表上有一个大的导入数据列表,其中一列是电话号码列表。我想把那列电话号码和表2中的一组号码进行比较。如果有匹配的数字,请将整行从工作表1复制到工作表3。这是我迄今为止所拥有的。

function copyRowtoSheet3() { 
var s1 = SpreadsheetApp.openById("1Aw11LiKzyezfrTQIuTsJPhUFtz8RPqLCc8FlIiy0ZlE").getSheetByName('Sheet1');
var s2 = SpreadsheetApp.openById("1Aw11LiKzyezfrTQIuTsJPhUFtz8RPqLCc8FlIiy0ZlE").getSheetByName('Sheet2'); 
var s3 = SpreadsheetApp.openById("1Aw11LiKzyezfrTQIuTsJPhUFtz8RPqLCc8FlIiy0ZlE").getSheetByName('Sheet3'); 
var values1 = s1.getDataRange().getValues();
var values2 = s2.getDataRange().getValues();
var resultArray = [];
for(var n=0; n < values1.length ; n++){
var keep = false;
for(var p=0; p < values2.length ; p++){
Logger.log(values1[n][0]+' =? '+values2[p][0]);
if( values1[n][0] == values2[p][0] && values1[n][1] == values2[p][1]){
resultArray.push(values1[n]);
Logger.log('true');
//break ;
}
}
}  
s3.getRange(+1,1,resultArray.length,resultArray[0].length).setValues(resultArray);
}

我现在的方法有点奏效,但并不完美,因为它似乎只复制了第一张纸上的数字,而不是整行,或者根本不起作用。我经常犯这个错误,但不是每次都犯。TypeError:无法读取未定义的属性"length"(第19行,文件"Code"(不太确定我做错了什么。这里的任何建议都会很有帮助。作为参考,以下是我的工作表的样子,以及我想要这个代码做什么。

Sheet1
Name      Phone Number  
John      2142354696
Virge     2345678901
Jason     2412305968
Tiffany   1304086932
Sheet2
Phone Numbers
2142354696
2412305968

Sheet3
John      2142354696
Jason     2412305968

只有当整行相似时,它才有效,因为在If中,您正在比较两个工作表的两列的值。

如果在表格1中,电话号码在第二列,而在表格2中,号码在第一列,则正确的做法是比较表格1[行N][列1]==表格2[行N][列0]。这是唯一要做的比较,只有感兴趣的细胞。

保留所有代码,只需将If行更改为:

if( values1[n][1] == values2[p][0] ){

最新更新