Javascript 使用Google Scrips和正则表达式返回匹配列

Javascript 使用Google Scrips和正则表达式返回匹配列,javascript,regex,google-apps-script,lookup,Javascript,Regex,Google Apps Script,Lookup,我一直在为我的google工作表编写一个脚本,它从一个单元格中提取一个完整的字符串,并将它们与第二个工作表中的关键字列表进行比较,这应该会返回列号。还有很多,但我有点麻烦 我已经尝试了一些方法,现在我正在尝试正则表达式。我想我用对了。我的逻辑是,如果关键字的正则表达式与原始查询的任何完整单词匹配,则返回true和列号 我已经在“标签”页偏移中找到了单元格,。但它检查正确的范围 function returnTag(narration){ var main = SpreadsheetApp.g

我一直在为我的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{ }

    }          
  }   
}
函数返回标签(旁白){
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行;
var-col;
对于(var col=1;col耦合事物:

  • newregexp()
    应该包含currentValue,并测试“叙述”(您的原始代码正在做相反的操作)
  • new RegExp()
    函数中不需要单词boundary
    \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{ }
    }          
  }   
}
函数返回标签(旁白){
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行;
var-col;
对于(var col=1;col耦合事物:

  • newregexp()
    应该包含currentValue,并测试“叙述”(您的原始代码正在做相反的操作)
  • new RegExp()
    函数中不需要单词boundary
    \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{ }
    }          
  }   
}
函数返回标签(旁白){
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行;
var-col;

对于(var col=1;col谢谢你!我认为这可能是像这样愚蠢的事情:)只是想知道,为什么不需要边界这个词?我想这意味着它会拉部分匹配/单词。谢谢:)谢谢你!我认为这可能是这样愚蠢的事情:)只是想知道,为什么不需要边界这个词?我想这意味着它会拉部分匹配/单词。谢谢:)