正在寻找将对字符串执行CTRL + F替换的Google脚本

时间:2014-01-21 04:38:05

标签: regex string csv google-apps-script

我已经在这里查看了类似任务的多种解决方案,并以不同的方式尝试了它们。

基本上,我有一个细长的,有点相似的文本字符串,我想隔离特定的文本标记,以便能够分割这些标记。我正在寻找的具体字符串是“MHPP”,我想用“[MHPP”替换它,所以我可以使用拆分功能拆分“]”。

我能够通过手动查找和替换(CTRL + F并为替换选择参数)来使其工作,但我希望能够编写脚本,因为我不会是运行脚本和需要的人简化低信息用户的流程。

使用= replace(find(“MHPP”),7,“] [MHPP”)只查找查找值的第一个实例,并且整个单元格中可能有多个用法用法。

有什么建议吗?我想可能有办法将单元格写入字符串,并在数组中替换,但该过程的逻辑正在逃避我。

我不是要求整个代码。我可以激活工作表,获取范围,并从那里开始工作,但我只是不知道如何编写特定的函数findAndReplace(),它实际上会找到字符串的所有重复并将它们全部替换。

我也愿意将.csv导入另一种格式,在那里运行一个函数,并将其返回到.csv,但在我的搜索中,这并没有证明是非常有成效的。

感谢您提供的任何指导,让我走上正确的道路。

1 个答案:

答案 0 :(得分:1)

您可以在工作表的全局迭代中的每个单元格上使用replace string function,在数组级别执行此操作以保持快速和简单。 代码本身可以非常简短直接:

function myFunction() {
  var sh = SpreadsheetApp.getActive();
  var data = sh.getDataRange().getValues();// get all data
  for(var n=0;n<data.length;n++){
    for(var m=0;m<data[0].length;m++){
      if(typeof(data[n][m])=='string'){ // if it is a string
         data[n][m]=data[n][m].replace(/MHPP/g,'][MHPP');// use the regex replace with /g parameter meaning "globally"
      }
    }
  }
  sh.getDataRange().setValues(data);// update sheet values
}

这可以改进以处理某些情况,其中脚本将被执行两次(或更多)以防止替换,如果'] ['已经存在...我会让你管理这些细节。