替换值范围内的文本并将其返回到另一个范围

时间:2015-04-30 06:21:41

标签: google-apps-script google-sheets

请帮我实现在值范围内替换文本并将其返回到另一个范围。

我现在尝试使用此脚本,但它只接受来自A1的值:

 function replaceBat() {
      var ss = SpreadsheetApp.getActiveSheet();
      var AAA = ss.getRange("A1:A1000").getValue();
      var AAAString = AAA.toString()
        .replace("1","2")
        .replace("5","6")
//and more than 50 terms;
      var prov = ss.getRange("B1:B1000");
      prov.setValue(AAAString);
      }

在A1范围内:A1000 - 要更改的值,

B1:B1000 - 返回更改值的范围。

例如: 我们有:

A1 12541

我们需要:

B1 22642

所有细胞都是如此

1 个答案:

答案 0 :(得分:1)

试试这个脚本。当然,您必须根据需要更改数组'toBhaChanged'和'changeWith'。确保需要替换的字符和要替换它的字符在各自的数组中处于相同的“位置”。

function replaceBat() {
var ss = SpreadsheetApp.getActiveSheet(),
    arr = [];
ss.getRange("A1:A1000")
    .getValues()
    .forEach(function (value) {
        var changeWith = ["2", "6", "notest", "/"],
            toBeChanged = ["1", "5", "test", "@"] //add characters to be changed here, the characters you want to change these with in the same 'place' in the above array.
            .map(function (c, i) {
                return value = replaceAll(value.toString(), c, changeWith[i])
            })
            arr.push([value])
    });
ss.getRange("B1:B1000")
    .setValues(arr)
}

function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.replace(new RegExp(c, "g"), r) : v;
}

编辑:如果您希望在一个数组中检查和替换值(根据注释中的请求),请将第一个脚本更改为:

function replaceBat2() {
var ss = SpreadsheetApp.getActiveSheet(),
    arr = [];
ss.getRange("A1:A1000")
    .getValues()
    .forEach(function (value) {
        [["1", "2"], ["5", "6"], ["test", "notest"], ["a", "/"]]
            .map(function (c, i) {
                return value = replaceAll(value.toString(), c[0], c[1])
            })
        arr.push([value])
    });
ss.getRange("B1:B1000")
    .setValues(arr)
}

A(可能更快?)替代第二个函数(replaceAll)将是:

function replaceAll(v, c, r) {
return v.indexOf(c) > -1 ? v.split(c)
    .join(r) : v;
}