使用数组中的值查找单元格行 - Google脚本

时间:2018-02-28 14:20:32

标签: arrays google-apps-script

我有一个数据库,我希望在其中找到行索引,具体取决于第一列中的值是否属于另一个值数组

说A列和B列具有以下值: 答:111,112,113,114,...... B:112,113

我想找到A列中的行,这些行的值在B列的值数组中。

到目前为止,这是我的代码。问题:indexOf没有检测到值,并且在Logger.log函数中测试时返回= -1

var ss = SpreadsheetApp.getActiveSpreadsheet(),
  sheet = ss.getActiveSheet(),
  values = sheet.getRange(7,2,5,1).getValues(), //This would be 'Column B'
  rows = sheet.getLastRow();


for (var i = 2; i <= 15; i++){
  Logger.log(values);
  Logger.log(sheet.getRange(7,1).getValue());
  Logger.log(values.indexOf(sheet.getRange(7,1).getValue()));

  if (values.indexOf(sheet.getRange(i,1).getValue()) != -1) { //column 1 because 'Column A'
    Logger.log("Success");

  }
}

使用Logger.log函数,我已经能够证明它实际拉动的值实际上与数组中的一个值相匹配......但由于某种原因,它并没有。检测它......

出于我的目的,我也尝试了以下内容:

for (var i = 2; i <= rows; i++){
  for (var j = 1; j <= values.length; j++){
    if (values[j] == sheet.getRange(i,1).getValue()){
      Logger.log("values[j] works. Found in cell " + i + ",1 con un valor que busco");
    }
  }
}

但是在这里,没有调用Logger.log函数,这意味着没有满足if语句,代表了同样的主要问题。测试的单元格中的数组值无法满足数组中的某个值。

提前感谢您的帮助。我现在已经真正搜索了几个小时,似乎找不到这个特定问题的答案......

对于它的价值,我尝试这样做的原因是因为我想根据条目数更新数据库(在本例中,列A),但只更新某些行(我在B栏上指出的行)。

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你。如果是这样,只需评论,我们就可以制定代码。

你的indexOf函数得-1,因为它无法搜索二维数组。 join()功能可以提供帮助;这会将您的二维数组合并为一个字符串。你的函数索引可以搜索一维字符串,你的logger.log函数可以给你正确的结果。