javascript - 使用 Google 脚本和正则表达式返回匹配列

标签 javascript regex google-apps-script lookup

我一直在为我的 google 工作表编写一个脚本,该脚本从一个单元格中获取一个完整的字符串,并将它们与第二个工作表上的关键字列表进行比较,这应该返回列号。还有更多工作要做,但我遇到了一些麻烦。

我已经尝试了几种方法,现在我正在尝试正则表达式。我认为我正在正确使用它。我的逻辑是,如果关键字的正则表达式匹配原始查询的任何完整单词,则返回 true 和列号。

我在“标签”工作表偏移量中得到了单元格。但它会检查正确的范围。

function returnTag(narration){
  var main = SpreadsheetApp.getActiveSpreadsheet();
  var tagsheet = main.getSheetByName('Tags');
  var numRows = tagsheet.getLastRow();
  var numCols = tagsheet.getLastColumn();
  var range = tagsheet.getRange(6, 2, numRows-5, numCols-1);
  var row;
  var col;

  for (var col = 1; col <= numCols-1; col++) {
    for (var row = 1; row <= numRows-5; row++) {
      var currentValue = range.getCell(row,col).getValue();
      var regExp = new RegExp("\b"+narration+"\b","gi");
      if(regExp.test(currentValue)) {
       return(col);
      }
      else{ }

    }          
  }   
}

我希望如果我在第一张工作表的 A2 中键入“海中有很多鱼”,它将返回 2 作为在第一张工作表的 A1 中找到的列引用。

我已经分享了下面表格的可编辑副本。

https://docs.google.com/spreadsheets/d/19FDT6ximWg4AcGzDTuqC4AYIW4MgXFwlUH0wYfGQi8s/edit?usp=sharing

谢谢:)

最佳答案

一些事情:

  • new RegExp() 应该包含 currentValue 并测试“叙述”(您的原始代码正在执行相反的操作)
  • new RegExp() 函数中不需要单词边界 \b

试试这个-

function returnTag(narration){
  var main = SpreadsheetApp.getActiveSpreadsheet();
  var tagsheet = main.getSheetByName('Tags');
  var numRows = tagsheet.getLastRow();
  var numCols = tagsheet.getLastColumn();
  var range = tagsheet.getRange(6, 2, numRows-5, numCols-1);
  var row;
  var col;
  for (var col = 1; col <= numCols-1; col++) {
    for (var row = 1; row <= numRows-5; row++) {
      var currentValue = range.getCell(row,col).getValue();
      var regExp = new RegExp(currentValue,"gi");
      if(regExp.test(narration)) {
       return(col);
      }
      else{ }
    }          
  }   
}

我已经在已共享的工作表中更新了相同的内容,现在可以使用了:)

关于javascript - 使用 Google 脚本和正则表达式返回匹配列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58279855/

相关文章:

javascript - 未捕获的 TypeError : $. get(...).then 不是函数

javascript - 使用javascript调用级联样式表

regex - 重复单词的正则表达式

ipad - iPad 上的 Google 电子表格(带有 App 脚本)

google-apps-script - Google App Script 如何使用 HTML 服务加载不同的页面?

javascript - Android,从 WebView 内的 javascript 调用浏览器

javascript - 在 Github Pages 上部署 Angular Universal?

Python:如何将字符串 'ub' 添加到字符串中每个发音的元音前?

mysql - SQL 正则表达式创建拆分 : Include SET

javascript - 获取重复事件和非重复事件的单个统一实例