使用Google电子表格脚本进行正则表达式查询

时间:2010-09-29 19:57:00

标签: regex google-apps-script google-sheets

我正在尝试完成Google脚本以重新格式化我希望变成超链接的字段。

这是电子表格中文本的通用格式:

tistaff:其他部分:person:randomname

这就是我希望它出现的方式:

<li><a href="http://www.thisisstaffordshire.co.uk/topics/person/randomname">randomname</a></li>

我做了大部分的工作,除了结束位,我无法解决。任何人都可以提供帮助。

这是我的剧本:

function HTMLtransform() {
  var sheet = SpreadsheetApp.getActiveSheet();
  for(var c=1; c<sheet.getLastRow(); c++){
    var rng = sheet.getRange("B"+c);
    var rplc = sheet.getRange("F"+c);
    var value = String(rng.getValue());

    var replVal = new String('test');

    var target = 'test'; // this variable is designed to capture the unique bit of the variable

    target = value.replace(/tistaff: other sections:[a-z]*: ([a-z]*)$/, '$1');// this variable is designed to capture the unique bit of the variable

    replVal = value;
    replVal = replVal.replace(/ company:/, 'company/');
    replVal = replVal.replace(/ person:/, 'person/');
    replVal = replVal.replace(/ place:/, 'place/');
    replVal = replVal.replace(/tistaff: other sections:/, '<li><a href="http://www.thisisstaffordshire.co.uk/topics/');

    replVal = replVal.replace(/ ([a-z]*)$/, '');
    replVal = replVal + target + '">' + target + '</a></li>';



    rplc.setValue(replVal);
  }
}

它适用于某一点,但这是输出:

**<li><a href="http://www.thisisstaffordshire.co.uk/topics/person/tistaff: other sections: person: randomname">tistaff: other sections: person: randomname</a></li>**

我做错了什么?

1 个答案:

答案 0 :(得分:1)

这是完成的代码:

我没有意识到您可以多次插入子模式。

function HTMLtransform() {
  var sheet = SpreadsheetApp.getActiveSheet();
  for(var c=1; c<sheet.getLastRow(); c++){
    var rng = sheet.getRange("B"+c);
    var rplc = sheet.getRange("F"+c);
   var value = String(rng.getValue());

    regexFormat = /tistaff: other sections: (place|company|person): ([a-z]*)$/

   // var replVal = new String('test');


    replVal = value.replace(regexFormat, '<li><a href="http://www.thisisstaffordshire.co.uk/topics/$1/$2'+'">$2</a></li>');




      rplc.setValue(replVal);
  }
}