Google Sheet脚本中的replaceText通配符

时间:2016-11-21 15:11:50

标签: google-apps-script google-sheets

我一直在尝试更换Google脚本中的某些文字,但它并没有产生我想要的内容。目前我正在使用Cameron Roberts的剧本 - How do I replace text in a spreadsheet with Google Apps Script?来替换我,但是我没有把它完全正确。

使用该代码我试图将'values'替换为'1'。值'然而,如果我多次运行代码,它会产生'1。 1.值'等因为它只找到'values'字符串。我想要的是一个通配符,它​​只搜索' values '然后放'1。值'但我似乎无法很好地掌握正则表达式语法来修复它。

function testReplaceInSheet(){
    var sheet = SpreadsheetApp.getActiveSheet()
    replaceInSheet(sheet,'values','1. values');
}

function replaceInSheet(sheet, to_replace, replace_with) {
  //get the current data range values as an array
  var values = sheet.getDataRange().getValues();

  //loop over the rows in the array
  for(var row in values){

    //use Array.map to execute a replace call on each of the cells in the row.
    var replaced_values = values[row].map(function(original_value){
      return original_value.toString().replace(to_replace,replace_with);
    });

    //replace the original row values with the replaced values
    values[row] = replaced_values;
  }

  //write the updated values to the sheet
  sheet.getDataRange().setValues(values);
}

2 个答案:

答案 0 :(得分:0)

如果您可以接受格式的微小更改,那么您可以将其中一个'值大写,例如:

replaceInSheet(sheet,'values','1. Values');

答案 1 :(得分:0)

如果前缀不存在,则会添加前缀。 模拟消极背后的负面看法

function addPrefix(s, find, prefix) {
  function reverse(x) {return x.split("").reverse().join("");}

  var sr = reverse(s);
  var findr = reverse(find);
  var prefixr = reverse(prefix);
  var findRegexpr = new RegExp(findr + "(?!" + prefixr + ")");

  return reverse(sr.replace(findRegexpr, findr + prefixr))
}