2013-07-22 25 views
0

我一直在嘗試自定義並重新編寫由Google here提供的重複查找程序的代碼。我的代碼複製到下面。這還不是最終版本,但現階段它已經可以工作了;不幸的是,我不知道爲什麼不行。重複的搜索腳本不會檢測到多個值

tablicaLinkow是含有的活性範圍內的所有的值, tablicaNowa是其中非重複sholuld被存儲

如何它想工作的是,「tablicaLinkow」是數組的數組的數組從所有活動行的第二列收集的值(因此它是一維數組)。腳本從'tablicaLinkow'中獲取一個值並在'tablicaNowa'中搜索它。如果存在,腳本日誌重複。如果不是,腳本將它放入'tablicaNowa'並記錄它是而不是重複

由於某些原因,腳本無法識別重複;總是記錄一個值,儘管它是一個不重複的值;示例日誌也在下面。

感謝您的幫助!

function sprawdzWielokrotne3() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var aktZas = ss.getActiveRange(); 

    var kolUwag = 9,          //Nevermind 
     kolSpra = 2,          //Column that is to be checked 
     aktRzad = aktZas.getRowIndex(),     //First row of the active range 
     aktWysk = aktZas.getHeight(),     //Amount of active rows 
     calSzer = sheet.getDataRange().getNumColumns(); //Nevermind 

    //Checks if user chose more than one row 
    if (aktWysk > 1){ 
    //Gets values of 2nd column of all the active rows 
    var tablicaLinkow = sheet.getRange(aktRzad, kolSpra, aktWysk).getValues(); 
    //Array where the non-duplicates are to be put 
    var tablicaNowa = new Array(); 

    for (var i in tablicaLinkow){ 
     var duplo = false; 
     for (var j in tablicaNowa){ 
     if (tablicaLinkow[i] == tablicaNowa[j]){ 
      duplo = true; 
     } 
     } 
     if (duplo == false){ 
     Logger.log(tablicaLinkow[i] + ' not a duplicate'); 
     tablicaNowa.push(tablicaLinkow[i]);   
     } else { 
     Logger.log(tablicaLinkow[i] + ' duplicate'); 
     } 
    } 
    } 
} 

例登錄

[13-07-22 17:36:19:145 CEST] 3199894 not a duplicate 
[13-07-22 17:36:19:145 CEST] 3199894 not a duplicate 
[13-07-22 17:36:19:146 CEST] 3199894 not a duplicate 
[13-07-22 17:36:19:146 CEST] 2417512 not a duplicate 
[13-07-22 17:36:19:146 CEST] 2417512 not a duplicate 
[13-07-22 17:36:19:147 CEST] 199894 not a duplicate 
[13-07-22 17:36:19:147 CEST] 2342261 not a duplicate 

回答

0

當你說「tablicaLinkow」是從所有活動行第二列聚集值的數組(因此它是一維數組)」這是不正確的,使你的腳本失敗。

即使範圍只有一個項目寬度,getValues()返回的數組始終是二維數組,即

更改你的代碼考慮到這一點,並如您所願

tablicaLinkow[i]tablicaLinkow[i][0]

+0

完美替代它可能會正常工作,就像一個魅力。現在,在閱讀完解釋之後,我在文檔中看到getValues()返回的數組是二維的。謝謝你,先生! –