在命名范围内查找文本

Find Text in a Named Range

我正在尝试获取用户输入的字符串的行号或索引号。我使用 spreadsheet.getRangeByName("Symbols").getValues() 检索数组中的数据。问题是它不以字符串形式检索数据,而是以数组形式检索数据。所以结果是一个数组数组。我想使用函数 indexOf(result.getResponseText().toUpperCase()),但这不起作用。这是我的代码:

  var aSymbols = spreadsheet.getRangeByName("Symbols").getValues();
  Logger.log(aSymbols);
  var row = aSymbols.indexOf(result.getResponseText().toUpperCase());
  Logger.log(row);

结果是:

[[ ], [XOM], [PLTR], [IBM], [VWAGY], [LIT], [ ], []]

我尝试在搜索字符串中添加“[”和“]”,但没有成功。我也尝试使用 spreadsheet.getRangeByName("Symbols").getValues().toString(),但它返回了 1 个大长字符串。我错过了什么?

解决方案:

您可以使用findIndex()获取二维数组中的索引:

  var aSymbols = spreadsheet.getRangeByName("Symbols").getValues();
  Logger.log(aSymbols);
  var row = aSymbols.findIndex(function check(e) {return e[0] === result.getResponseText().toUpperCase()});
  Logger.log(row);

参考:

findIndex()

你可以试试这个:

 let aSymbolsArray = aSymbols.flat();

这会将双精度数组转换为字符串数组。

function test(){
  
  let aSymbols = [['' ], ['XOM'], ['PLTR'], ['IBM'], ['VWAGY'], ['LIT'], ['' ], ['']];
  console.log(aSymbols);
    //
    //   [ 'XOM' ],
    //   [ 'PLTR' ],
    //   [ 'IBM' ],
    //   [ 'VWAGY' ],
    //   [ 'LIT' ],
    //   [ '' ],
    //   [ '' ] ]
    //
  
  let aSymbolsArray = aSymbols.flat();
  console.log(aSymbolsArray);
      //
      // [ '', 'XOM', 'PLTR', 'IBM', 'VWAGY', 'LIT', '', '' ]
      //
}