Google apps script 穿过一个范围

Google apps script 穿过一个范围,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我可能误解了一些基本知识,但我试图用replace替换错误的公式。 单个细胞中的一个似乎起作用,但我正在与之斗争的是一组细胞 var W2X = AllShts[b].getRange("O18").getFormula(); AllShts[b].getRange('O18').setValue(W2X.replace("W","X")); c=c+1 var rngN18_29 = AllShts[b].getRange("N18:N29"); fo

我可能误解了一些基本知识,但我试图用replace替换错误的公式。 单个细胞中的一个似乎起作用,但我正在与之斗争的是一组细胞

    var W2X = AllShts[b].getRange("O18").getFormula();
    AllShts[b].getRange('O18').setValue(W2X.replace("W","X"));
    c=c+1

    var rngN18_29 = AllShts[b].getRange("N18:N29");
    for (var a = 0; a < rngN18_29.getNumRows(); a++) {
      var r = rngN18_29.getNumRows();
      var x = rngN18_29[a].getA1Notation();
      var rngN = rngN18_29[a].getFormula();
      rngN18_29[a].setValue(rngN.replace("V","W"));
      c=c+1
    };
我已经使用getRange设置了变量rngN18_29

为了逐步遍历每个单元格,我尝试使用for语句,使用行数作为迭代的计数。用变量r检查这一点,这似乎是正确的

但是,我无法让rngN18_29[a]查看我想要的单元格。我发现错误,无法读取未定义的属性“getA1Notation”与getFormula相同

现在我最感兴趣的是如何跨过N18:N29的范围 顺便问一下,是否可以一次对整个范围进行替换,以更改公式而不是值

编辑:

按照主人的建议,我有以下几点似乎能奏效。 非常感谢,先生

var rngN18_29 = AllShts[b].getRange("N18:N29").getFormulas();
for (var a = 0; a < rngN18_29.length; a++) {      
  rngN18_29[a][0] = rngN18_29[a][0].replace("V","W");
}
AllShts[b].getRange("N18:N29").setFormulas(rngN18_29);

而是通过它的值。修改阵列并一次性将其设置回原位

var rngN18_29 = AllShts[b].getRange("N18:N29")
var formulas = rngN18_29.getFormulas();
for (var a = 0; a < formulas.length; a++) {      
   formulas[a][0] =  formulas[a][0].replace("V","W");
}
rngN18_29.setFormulas(formulas);

而是通过它的值。var values=AllShts[b].getRangeN18:N29.getValues;或var formls=AllShts[b]。getRangeN18:N29.getFormulas。修改阵列并一次性将其设置回原位。阅读文档中的最佳实践。有关详细信息,请参阅。然后我是否会使用AllShts[b].getRangeN18:N29[a].setValue将原始公式更改为新公式?我无法确定如何分配单个单元格,因为rngN18_29[a]正在创建错误。感谢您将更改数组formls:formls[a][0]=formls[a][0].replacev,w。最后,range.SetFormulasformls请在找到问题解决方案时参考@主持人考虑创建一个答案,以便它可以被接受和投票。