我已经在这里查看了类似任务的多种解决方案,并以不同的方式尝试了它们。
基本上,我有一个细长的,有点相似的文本字符串,我想隔离特定的文本标记,以便能够分割这些标记。我正在寻找的具体字符串是“MHPP”,我想用“[MHPP”替换它,所以我可以使用拆分功能拆分“]”。
我能够通过手动查找和替换(CTRL + F并为替换选择参数)来使其工作,但我希望能够编写脚本,因为我不会是运行脚本和需要的人简化低信息用户的流程。
使用= replace(find(“MHPP”),7,“] [MHPP”)只查找查找值的第一个实例,并且整个单元格中可能有多个用法用法。
有什么建议吗?我想可能有办法将单元格写入字符串,并在数组中替换,但该过程的逻辑正在逃避我。
我不是要求整个代码。我可以激活工作表,获取范围,并从那里开始工作,但我只是不知道如何编写特定的函数findAndReplace(),它实际上会找到字符串的所有重复并将它们全部替换。
我也愿意将.csv导入另一种格式,在那里运行一个函数,并将其返回到.csv,但在我的搜索中,这并没有证明是非常有成效的。
感谢您提供的任何指导,让我走上正确的道路。
答案 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
}
这可以改进以处理某些情况,其中脚本将被执行两次(或更多)以防止替换,如果'] ['已经存在...我会让你管理这些细节。