如何在appscript中获取数组的最大索引

Tip*_*sor 0 google-sheets google-apps-script

我试图将一行中的值放入数组中。为此,我使用了 googlesheet 中的 appscript。检查这个数组的长度后rowtemp,答案是1。但我想找到里面的孩子的数量。如果“temp”中的元素与“rowtemp”中的元素相同,那么您需要找到我使用以下代码的列号。 在此输入图像描述

    function rangeExa(){
  var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet4");

  var temp = ss.getRange("A11:B22").getValues();
  Logger.log(temp);
  Logger.log(temp.length);
  Logger.log(temp[3][0]);

  var rowTemp = ss.getRange("D25:O25").getValues();
  Logger.log(rowTemp);
  Logger.log(rowTemp.length);
  Logger.log(rowTemp[0][2]);
  Logger.log(rowTemp);

  for(i=0; i<=rowTemp.length; i++){
  if(temp[3][0] == rowTemp[0][i]){
    Logger.log("yessss");
  }return;
  }  
}
Run Code Online (Sandbox Code Playgroud)

soM*_*rio 5

正如我在评论部分详细解释的那样,您的目标不明确。

然而,代码中存在一个与 的长度相关的明显问题rowTemp

rowTemp是单个数组的数组,因为它涉及单行。换句话说,它的格式为[["High","Not High",..]]. 因此,rowTemp.length将为您提供1,因为该数组中只有一行。如果你想迭代列,你需要使用rowTemp[0].length

  for(i=0; i<rowTemp[0].length; i++){
    if(temp[3][0] == rowTemp[0][i]){
     Logger.log("yessss");
     Logger.log(i+4); // column number if there is a match
    }
  } 
Run Code Online (Sandbox Code Playgroud)

上面的for循环将检查是否36出现在日志页面中D25:O25,如果出现则输出。yessss

  • 还可以使用i<rowTemp[0].length代替,i<=rowTemp[0].length因为数组的最后一个索引是,rowTemp[0].length-1否则您将得到undefined

有关的:

range 方法 getValues() 返回和 setValues() 接受什么?