使用脚本替换Google电子表格中的多个字符串

时间:2016-08-26 15:17:50

标签: javascript google-apps-script google-sheets

我想为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"];

然而鉴于我的编程技巧很差,我不知道如何处理。

你能帮我吗?

提前致谢,

1 个答案:

答案 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;}
     }
  }
 });
}