Google Apps脚本:RegExp g修饰符

时间:2018-03-25 14:23:05

标签: google-apps-script google-sheets

我似乎无法在RegExp中使用“g修饰符”来使用Google脚本。

当我尝试应用它时,有时会收到"ReferenceError: "g" is not defined."的错误。当我删除/g regExp.execinput.match(regExp)工作时,但仅限第一次匹配。其他时候,我会让/g工作,但它会返回null,甚至不会产生第一场比赛。我曾尝试过一段时间的循环,但我不想放慢这个过程的速度(一旦我按照预期的方式工作,我会为另一个帖子保存优化这个脚本)。

简短版本是,我正在尝试获取所有匹配(电子邮件地址),而不仅仅是第一个。我在哪里申请/g?我应该使用其他方法吗?

你可以看到(下面)我在下面尝试的内容。

任何提示?我感谢任何帮助我理解这一点以及任何可以向我展示更好的方法来解决这个问题的人。谢谢!

 if (colA != "" && colE != processed) {
        var html = UrlFetchApp.fetch(colA).getContentText();
       //Logger.log(html);

        var regExp = new RegExp("[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");
        var regExp2 = new RegExp("[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");
        var regExp3 = '[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]/g {2,4}';
        var regExp4 = '[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}/g';
        var extractTest = html.match(regExp3);
        //var extract = regExp.exec(html);
        Logger.log(extractTest);
    }

你可以在下面看到它的“更大图片”。

    //TEST
var processed = "YES";

function test() {

  var ss = SpreadsheetApp.openById('1E4yUVIpwi00DzjfnXrZSgNFmVjOQbNWewxAiTBHRdD4');
  var sheet = ss.getSheetByName('Sheet5');

   var currentRow = 2;
   var currentColumn = 1;
   var numRows = sheet.getLastRow()-1;
   var numColumns = 5;

   var range = sheet.getRange(currentRow, currentColumn, numRows, numColumns);
   var values = range.getValues();
   //Logger.log(values);

  for (var i = 0; i < numRows; ++i) {
    var column = values[i];
    var colA = column[0];
    var colB = column[1];
    var colC = column[2];
    var colD = column[3];
    var colE = column[4];

     if (colA != "" && colE != processed) {
        var html = UrlFetchApp.fetch(colA).getContentText();
       //Logger.log(html);

        var regExp = new RegExp("[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");
        var regExp2 = new RegExp("[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");
        var regExp3 = '[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]/g {2,4}';
        var regExp4 = '[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}/g';
        var extractTest = html.match(regExp3);
        //var extract = regExp.exec(html);
        Logger.log(extractTest);
    }
  }

    //var destRange = sheet.getRange(currentRow+i,2);
    //destRange.setValue(extract);
    //var destRange2 = sheet.getRange(currentRow+i,5);
    //destRange2.setValue(processed);
    SpreadsheetApp.flush();
  }

1 个答案:

答案 0 :(得分:1)

使用@ I&#39;提供的解决方案 - &#39;我(见上面的评论):var re = /[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}/g;