如果工作表1和工作表2中都存在值,则复制行,并将其粘贴到工作表3中。Google表格。Google Apps脚本

加勒特·基德

我的脚本部分需要帮助。我在第一页上有一个大的导入数据列表,在一列上有一个电话号码列表。我想将那列电话号码与工作表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
Passele

它仅在整个行都相似时才起作用,因为If您正在比较两个工作表的两列的值。

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

保留所有代码,然后将If更改为:

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章