如何从电子表格的第一行返回所有值

时间:2018-12-20 04:21:37

标签: google-apps-script

电子表格的顶部有一些关键字,这些关键字决定了我要搜索的栏目。要开始此过程,我尝试将第一行读入数组,然后逐步遍历该数组,直到找到正确的值为止。我的问题是我的数组长度显示为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?

1 个答案:

答案 0 :(得分:1)

此修改如何?

修改点:

  • 在脚本中,您从“ 1:1”范围内检索值。这意味着将检索第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;

两个脚本都可以检索到相同的结果。

注意:

  • 如果要在for循环之外使用listenCol,则在考虑范围时,应在for循环之前声明listenCol的{​​{1}}。

参考文献:

如果我误解了您的问题,请告诉我。我想修改它。