更改查找和替换Google表格脚本

时间:2018-06-20 12:38:30

标签: javascript google-sheets

我有以下脚本,尽管我想将其更改为仅在特定工作表(Sheet4!A:AB)上查找和替换。

我该怎么做:

function fandr() {
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var s=ss.getActiveSheet();
  var r=s.getDataRange();
  var vlst=r.getValues();
  var i,j,a,find,repl;
  find="abc";
  repl="xyz";
  for (i in vlst) {
    for (j in vlst[i]) {
    a=vlst[i][j];
    if (a==find) vlst[i][j]=repl;
  }
 }
  r.setValues(vlst);
}

1 个答案:

答案 0 :(得分:0)

我认为pnuts的评论对您的处境很有帮助。如果您仍在寻找解决方案,该答案如何?您要查找并替换Sheet4!A:AB中的值。如果我的理解是正确的,我想提出两种模式。我认为您有几种解决方案。因此,请将此视为其中之一。

模式1

此修改是一个简单的修改。它将检索值的范围修改为Sheet4!A:AB

var ss = SpreadsheetApp.getActiveSpreadsheet();
var r = ss.getRange("Sheet4!A:AB");
var vlst = r.getValues();
var i, j, a, find, repl;
find = "abc";
repl = "xyz";
for (var i = 0; i < vlst.length; i++) {
  for (var j = 0; j < vlst[i].length; j++) {
    a = vlst[i][j];
    if (a == find) vlst[i][j] = repl;
  }
}
r.setValues(vlst);

模式2

在模式1的情况下,由getRange("Sheet4!A:AB")检索的值包括空行。由此,搜索速度变慢。因此,在此模式2中,使用getLastRow()来检索“ A1:AB”的数据范围。

var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getSheetByName("Sheet4");
var r = s.getRange("A1:AB" + s.getLastRow());
var vlst = r.getValues();
var i, j, a, find, repl;
find = "abc";
repl = "xyz";
for (var i = 0; i < vlst.length; i++) {
  for (var j = 0; j < vlst[i].length; j++) {
    a = vlst[i][j];
    if (a == find) vlst[i][j] = repl;
  }
}
r.setValues(vlst);

参考文献:

如果我误解了您想要什么,请告诉我。我想修改它。