Google apps script 数组.indexOf(值)-未在GAS中提供正确的索引号

Google apps script 数组.indexOf(值)-未在GAS中提供正确的索引号,google-apps-script,google-sheets,google-spreadsheet-api,Google Apps Script,Google Sheets,Google Spreadsheet Api,在天然气方面 在谷歌电子表格B1:B10范围内 Code.gs function myFunction() { var sheet2 = SpreadsheetApp.getActivesheet(); var firstset = sheet2.getRange('B1:B10').getValues(); Logger.log(firstset) var found = firstset.indexOf('[re]') Logger.log(found) } 代码的答案

在天然气方面

在谷歌电子表格B1:B10范围内

Code.gs
function myFunction() {
  var sheet2 = SpreadsheetApp.getActivesheet();
  var firstset = sheet2.getRange('B1:B10').getValues();
  Logger.log(firstset)
  var found = firstset.indexOf('[re]')
  Logger.log(found)
}
代码的答案应该是2,但是日志显示为-1(不匹配)。有什么帮助吗

在一个简单的for循环中:

B1  we
B2  we
B3  re
B4  ef
B5  ge
B6  er
B7  fe
B8  th
B9  rg
B10 pq
在一个简单的for循环中:

B1  we
B2  we
B3  re
B4  ef
B5  ge
B6  er
B7  fe
B8  th
B9  rg
B10 pq

如果将数据放在一行而不是一列中,代码可以如下使用:

function myFunction() {
  var sheet2 = SpreadsheetApp.getActiveSheet();
  var firstset = sheet2.getRange('B1:B10').getValues();
  for(var n in firstset){
    if(firstset[n][0]=='re'){break}
  }
  Logger.log(n);
}
indexOf
-只能在一维数组中搜索-因此在我的示例中使用了
firstset[0]。indexOf('[re]')


.getValues()
-始终返回二维数组,即使只有一行或一列。

如果要将数据放在一行而不是一列中,代码可以这样使用:

function myFunction() {
  var sheet2 = SpreadsheetApp.getActiveSheet();
  var firstset = sheet2.getRange('B1:B10').getValues();
  for(var n in firstset){
    if(firstset[n][0]=='re'){break}
  }
  Logger.log(n);
}
indexOf
-只能在一维数组中搜索-因此在我的示例中使用了
firstset[0]。indexOf('[re]')


.getValues()
-始终返回二维数组,即使只有一行或一列。

以下是适合我的方法

这是一个修改过的方法,原来没有给我正确的结果

function myFunction() {
  var sheet2 = SpreadsheetApp.getActivesheet();
  var firstset = sheet2.getRange('A1:J1').getValues();
  Logger.log(firstset)
  var found = firstset[0].indexOf('[re]')
  Logger.log(found)
}
注意

Array.prototype.findIndex = function(search)
{
  if(search == "") return -1;
  for(var t = 0; t < this.length; t++)
  {
    if(this[t].search(search) >=0)
    {break}
  }
  return t-1;
}
使用此方法按名称获取图纸列的索引时,将索引增加1以使用sheet.getRange(rowIndex,columnIndex)


这是对我有用的

这是一个修改过的方法,原来没有给我正确的结果

function myFunction() {
  var sheet2 = SpreadsheetApp.getActivesheet();
  var firstset = sheet2.getRange('A1:J1').getValues();
  Logger.log(firstset)
  var found = firstset[0].indexOf('[re]')
  Logger.log(found)
}
注意

Array.prototype.findIndex = function(search)
{
  if(search == "") return -1;
  for(var t = 0; t < this.length; t++)
  {
    if(this[t].search(search) >=0)
    {break}
  }
  return t-1;
}
使用此方法按名称获取图纸列的索引时,将索引增加1以使用sheet.getRange(rowIndex,columnIndex)


“[rel]”是字符串,您的数组不是字符串数组而是数组数组:-)谢谢..有没有办法这样做,我的意思是从数组中获取索引或将数组转换为字符串数组“[rel]”是字符串,您的数组不是字符串数组而是数组:-)谢谢..有没有办法这样做,我的意思是从数组数组中获取索引或将数组数组转换为字符串数组Hanks Serge…将尝试,但
{break}
是否意味着在匹配的情况下停止循环?谢谢Serge…将尝试,但
{break}
是否意味着在匹配的情况下停止循环?