Google apps script 比较两个Google工作表,只复制不重复的行
我试图比较两个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
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提供的所有帮助。我将查看您的代码。学习新内容不会有任何伤害。