【问题标题】:Find Text in a Named Range在命名范围内查找文本
【发布时间】:2021-04-02 17:39:58
【问题描述】:

我正在尝试获取用户输入的字符串的行号或索引号。我使用电子表格.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]、[ ]、[]]

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

【问题讨论】:

    标签: google-apps-script indexof


    【解决方案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()

    【讨论】:

    • 非常感谢 :)
    【解决方案2】:

    你可以试试这个:

     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', '', '' ]
          //
    }
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-22
      • 2016-10-08
      • 1970-01-01
      相关资源
      最近更新 更多