重复搜索脚本不会检测多个值

时间:2013-07-22 15:51:09

标签: javascript google-apps-script google-sheets

我一直在尝试自定义并重新编写由Google here提供的重复查找器代码。我的代码复制如下。它还不是最终版本,但在这个阶段它应该已经有效了;不幸的是,我不知道为什么不这样做。

tablicaLinkow 是一个包含所有有效范围值的数组, tablicaNowa 是一个存储非重复内容的数组

我希望它如何工作是'tablicaLinkow'是从所有活动行的第二列收集的值数组(因此它是一维数组)。脚本从'tablicaLinkow'获取一个值,并在'tablicaNowa'中搜索它。如果存在,则脚本记录重复。如果不是,脚本将其放入'tablicaNowa'并记录它是而不是duplicte

由于某种原因,脚本无法识别重复项;总是记录一个值尽管它是重复的;示例日志也在下面。

感谢您的帮助!

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

2 个答案:

答案 0 :(得分:0)

也许使用indexOf是更好的选择。

答案 1 :(得分:0)

当你说“tablicaLinkow”是从所有活动行的第二列(因此它是一维数组)收集的值数组时“这不是真的并且导致你的脚本失败。< / p>

getValues()返回的数组总是2D数组,,即使范围只有一个项目宽度。

更改您的代码以将其考虑在内,它可能会按预期工作

tablicaLinkow[i]应替换为tablicaLinkow[i][0]