Google apps script 比较两个Google工作表,只复制不重复的行

Google apps script 比较两个Google工作表,只复制不重复的行,google-apps-script,Google Apps Script,我试图比较两个Google工作表,只将非重复值从一个工作表复制到另一个工作表,但它不起作用 嵌套循环用于将ss1中的每一行与ss2中的所有行拉入数组后进行检查。如果ss1中的行不在ss2中,则应将其复制到ss2中的第一个空行(它会更改布尔值)。当前,脚本无法“看到”这两个值是否相同。日志显示“不匹配”,所有行都复制到第二页。(第2页的第一行与第1页的第一行是重复的。)这可能很简单,但我没有看到 var ss1=SpreadsheetApp.openById('myID').getSheetByN

我试图比较两个Google工作表,只将非重复值从一个工作表复制到另一个工作表,但它不起作用

嵌套循环用于将
ss1
中的每一行与
ss2
中的所有行拉入数组后进行检查。如果
ss1
中的行不在
ss2
中,则应将其复制到
ss2
中的第一个空行(它会更改布尔值)。当前,脚本无法“看到”这两个值是否相同。日志显示“不匹配”,所有行都复制到第二页。(第2页的第一行与第1页的第一行是重复的。)这可能很简单,但我没有看到

var ss1=SpreadsheetApp.openById('myID').getSheetByName('Sheet1');
var ss2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var ss1lr=ss1.getLastRow();
var ss2lr=ss2.getLastRow();
var arr1;
var arr2;
var ss2NewRow=ss2lr+1;

function getRows(){

  var range1=ss1.getRange("A2:U"+ss1lr).getValues();
  var range2=ss2.getRange("A2:U"+ss2lr).getValues();
  var blFound;

  for(var i=0;i<ss1lr-1;i++){
    arr1=range1[i];
      Logger.log("arr1[" + i + "]:  " + arr1);  
      //result:    arr1[0]:  Mon Jul 17 2017 15:35:23 GMT-0500 (CDT),Damaged,Bob Smith,123456-1,item123     
      cTime=range1[i][0];
      cName=range1[i][2];
      cOrder=range1[i][3];

      for(var j=0;j<ss2lr-1;j++){
        //arr2=range2[j];
        mTime= range2[j][0];
        mName= range2[j][2];
        mOrder=range2[j][3];

        Logger.log("cTime: " + cTime + "=====" + "mTime:  " + mTime);
          //result:  cTime: Mon Jul 17 2017 15:35:23 GMT-0500 (CDT)=====mTime:  Mon Jul 17 2017 15:35:23 GMT-0500 (CDT)
        Logger.log("cName: " + cName + "=====" + "mName:  " + mName); 
          //result: cName: Bob Smith=====mName:  Bob Smith
        Logger.log("cOrder: " + cOrder + "=====" + "mOrder:  " + mOrder); 
          //result: cOrder: 123456-1=====mOrder:  123456-1                

        if(cTime==mTime){
          Logger.log("Time matches");
            }

        if((cTime==mTime) && (cName==mName) && (cOrder==mOrder)){
          //they match - do not copy
          Logger.log("match");
          blFound=true;
          break;
          } else {
          Logger.log("no match"); //result:  no match
          blFound=false;
          } //end if-else
        }//end j loop

        if (blFound===false) {

          ss2.getRange("A" + (ss2NewRow)+":U"+(ss2NewRow)).setValues([arr1]);
            ss2NewRow=ss2NewRow+1;
           }
      }//end i loop

    } //end for loop
var ss1=SpreadsheetApp.openById('myID').getSheetByName('Sheet1');
var ss2=SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var ss1lr=ss1.getLastRow();
var ss2lr=ss2.getLastRow();
var-arr1;
var-arr2;
变量ss2NewRow=ss2lr+1;
函数getRows(){
var range1=ss1.getRange(“A2:U”+ss1lr.getValues();
var range2=ss2.getRange(“A2:U”+ss2lr.getValues();
发现变异系数;

对于(var i=0;i,根据您的解释,我认为这可能有效。但我不想在电子表格中输入大量数据来测试它,所以我没有测试它。此例程只识别行,但不处理它们。这取决于您

function findNonDupes()
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht1=ss.getSheetByName('Dupe1');
  var sht2=ss.getSheetByName('Dupe2');
  var rng1=sht1.getDataRange();
  var rng2=sht2.getDataRange();
  var rng1A=rng1.getValues();
  var rng2A=rng2.getValues();
  var dupeRows=[];
  var nonDupes=[];
  for(var i=0;i<rng1A.length;i++)
  {
    var isDupe=true;
    for(var j=0;j<rng1A[i].length;j++)
    {
      if(rng1A[i][j]!=rng2A[i][j])
      {
        isDupe=false;
        break;
      }
    }
    if(isDupe)
    {
      dupeRows.push(i+1);
    }
  }
  Logger.log(dupeRows);
  for(var i=0;i<rng1A.length;i++)
  {
    if(dupeRows.indexOf(i+1)==-1)
    {
      nonDupes.push(i+1);
    }
  }
  Logger.log(nonDupes);
  SpreadsheetApp.getUi().alert('Rows to Copy: ' + nonDupes.join(', '));
}
函数findNonDupes()
{
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sht1=ss.getSheetByName('Dupe1');
var sht2=ss.getSheetByName('Dupe2');
var rng1=sht1.getDataRange();
var rng2=sht2.getDataRange();
var rng1A=rng1.getValues();
var rng2A=rng2.getValues();
var dupeRows=[];
var nonDupes=[];

对于(var i=0;我让我看看是否可以创建一个并将数据复制到其中。该特定的电子表格上有一些表格。现在开始。很抱歉花费了这么长时间。我认为此链接应该可以工作。@CooperI实际上找到了一个解决代码的替代方法-将时间更改为时间+“”它将其转换为字符串,并能识别匹配项。非重复项现在可以复制了。但感谢@Cooper提供的所有帮助。我将查看您的代码。学习新内容不会有任何伤害。