繁体   English   中英

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

[英]Copy row if value exists in both sheet 1 and sheet 2 and paste it to sheet 3. Google Sheets. Google Apps Script

我的脚本的一部分需要帮助。 我在第一张纸上有大量导入的数据列表,其中一列有电话号码列表。 我想将该列电话号码与工作表 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);
}

我现在所拥有的有点有效,但是它并不完美,因为它似乎只是从第一张纸中复制数字,而不是整行,或者根本不起作用。 我经常收到此错误,但并非总是如此。 类型错误:无法读取未定义的属性“长度”(第 19 行,文件“代码”)不太确定我做错了什么。 这里的任何建议都会有所帮助。 作为参考,这是我的工作表的外观以及我希望此代码执行的操作。

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

Sheet2
Phone Numbers
2142354696
2412305968


Sheet3
John      2142354696
Jason     2412305968

它的工作原理,只有当整个行是类似的,因为If你是比较两个工作表的两列的值。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM