为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Google Scrips 和 Regex 返回匹配列

使用 Google Scrips 和 Regex 返回匹配列

一只萌萌小番薯 2021-11-12 16:25:35
我一直在为我的谷歌工作表编写一个脚本,它从一个单元格中获取一个完整的字符串,并将它们与第二个工作表上的关键字列表进行比较,这应该返回列号。还有更多事情要做,但我遇到了一些麻烦。我尝试了几种方法,现在我正在尝试正则表达式。我想我正在正确使用它。我的逻辑是,如果关键字的正则表达式匹配原始查询的任何完整单词,则返回 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谢谢 :)
查看完整描述

1 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

夫妇的事情:

  • new RegExp()应包含CurrentValue的和测试的“叙事”(原来的代码是做反向)

  • 您不需要函数\b内的单词边界new RegExp()

尝试这个 -

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{ }

    }          

  }   

}

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


查看完整回答
反对 回复 2021-11-12
  • 1 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信