我有一个数据库,我希望在其中找到行索引,具体取决于第一列中的值是否属于另一个值数组
说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栏上指出的行)。
答案 0 :(得分:0)
我希望我能正确理解你。如果是这样,只需评论,我们就可以制定代码。
你的indexOf
函数得-1,因为它无法搜索二维数组。 join()
功能可以提供帮助;这会将您的二维数组合并为一个字符串。你的函数索引可以搜索一维字符串,你的logger.log
函数可以给你正确的结果。