2016-01-23 104 views
4

我想在同一電子表格的兩張不同工作表中識別相同的行。我嘗試了下面的代碼,它不起作用。比較google電子表格中的行

function getMyEqualRows() 
{ 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet1 = ss.getSheets()[0]; 
var sheet2 = ss.getSheets()[1]; 

var sheetOneValues = sheet1.getRange('A1:G20').getValues(); 
var sheetTwoValues = sheet2.getRange('A1:G20').getValues(); 
var equalRows = []; 

for (var i = 0; i <= sheetOneValues.length; i++) {  
    for(var j = 0; j <= sheetTwoValues.length; j++){ 
    if(sheetOneValues[i] == sheetTwoValues[j]) { 
    equalRows.push(sheetOneValues[i]); 
    } 
    } 
return equalRows; 
} 
} 
+1

sheetOneValues [i]和sheetTwoValues [j]是數組。你不能用==比較數組。 – SpiderPig

回答

2

你不能==比較兩個arrays平等。相反,您可以使用.join()方法。它將這些數組中的所有元素連接到一個字符串。這個檢查字符串數組是否相等。我不確定這是否是最好的方法。

function getMyEqualRows() 
{ 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet1 = ss.getSheets()[0]; 
    var sheet2 = ss.getSheets()[1]; 

    var sheetOneValues = sheet1.getRange('A1:G20').getValues(); 
    var sheetTwoValues = sheet2.getRange('A1:G20').getValues(); 

    var equalRows = []; 

    for(var i in sheetOneValues) 
    { 
    var anEqualRow = false; 
    for(var j in sheetTwoValues) 
    { 
     if(sheetOneValues[i].join() == sheetTwoValues[j].join()){ 
     anEqualRow = true; 
     } 
    } 
    if(anEqualRow){ 
     equalRows.push(sheetOneValues[i]); 
    } 
    } 
    return equalRows; 
} 

希望這會奏效!

+0

非常感謝你@ijay。太棒了 ! – Newbie