电子表格的顶部有一些关键字,这些关键字决定了我要搜索的栏目。要开始此过程,我尝试将第一行读入数组,然后逐步遍历该数组,直到找到正确的值为止。我的问题是我的数组长度显示为1,这意味着我显然做错了什么。
我从触发器onEdit(e)调用此函数。我的电子表格并不是很有趣,它有10列和100行,并且在最上面一行有2个值。
function SearchMe(e) {
var sheet = e.source.getActiveSheet();
var sheetName = sheet.getName();
var headerRng = sheet.getRange('1:1');
var headerValues = headerRng.getValues();
for (var i = 0; i < headerValues.length; i++) {
if(headerValues[i] == "status") {
var listenCol = i+1;
break;
}
}
}
任何想法为何headerValues.length总是返回1?
答案 0 :(得分:1)
此修改如何?
getValues()
检索的值是二维数组。
headerValues.length
是1。headerValues[0].length
是所有列的数量。请如下修改for循环。
for (var i = 0; i < headerValues[0].length; i++) { // Modified
if(headerValues[0][i] == "status") { // Modified
var listenCol = i+1;
break;
}
}
或
您还可以如下替换上面的脚本。
var listenCol = headerValues[0].indexOf("status") + 1;
两个脚本都可以检索到相同的结果。
listenCol
,则在考虑范围时,应在for循环之前声明listenCol
的{{1}}。如果我误解了您的问题,请告诉我。我想修改它。