我想为Google Spreadsheet创建一个脚本,以便自动替换一系列字符串(实际上,用于将字符串从一种语言转换为另一种语言)。问题是我必须每天都这样做,脚本会让我节省很多时间。
我发现Bannager Bong创建了这个脚本。它适用于一个单独的字符串,但我想让它适用于一系列元素:
function fandr() {
var r=SpreadsheetApp.getActiveSheet().getDataRange();
var rws=r.getNumRows();
var cls=r.getNumColumns();
var i,j,a,find,repl;
find="abc";
repl="xyz";
for (i=1;i<=rws;i++) {
for (j=1;j<=cls;j++) {
a=r.getCell(i, j).getValue();
if (r.getCell(i,j).getFormula()) {continue;}
try {
a=a.replace(find,repl);
r.getCell(i, j).setValue(a);
}
catch (err) {continue;}
}
}
}
所以我想从find=["abc","aaa","ooo"];
循环变量并将这些字符串更改为repl=["xyz","UUU","aAa"];
然而鉴于我的编程技巧很差,我不知道如何处理。
你能帮我吗?
提前致谢,
答案 0 :(得分:1)
我使用了发现中的地图 - &gt;替换对象,以便更清楚哪些值与哪些其他值一致。然后我循环遍历每个键/值对,并使用与原始代码段相同的逻辑。
function FindAndReplace() {
var data_range = SpreadsheetApp.getActiveSheet().getDataRange();
var num_rows = data_range.getNumRows();
var num_columns = data_range.getNumColumns();
var find_replace = {
"abc": "xyz",
"aaa": "UUU",
"ooo": "aAa",
}
Object.keys(find_replace).map(function(find) {
var replace = find_replace[find];
for (var row=1; row <= num_rows; row++) {
for (var col=1; col <= num_columns; col++) {
var value = data_range.getCell(row, col).getValue();
if (data_range.getCell(row, col).getFormula()) {continue;}
try {
value = value.replace(find, replace);
data_range.getCell(row, col).setValue(value);
}
catch (err) {continue;}
}
}
});
}