setFormulas不会跳过空数组元素,覆盖值

时间:2014-09-30 22:53:19

标签: google-apps-script

考虑下面的代码:它设置值然后在一个范围内设置函数,但是它会覆盖已设置的值。

function test() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var range = ss.getRange("A1:B2");
  var values = [["First","row"],["Second","row"]];
  var formulas = [["=42",""],["","=77"]];
  range.setValues(values);
  range.setFormulas(formulas);
}

为什么设置空公式会覆盖任何设定值,反之亦然?想知道是否有办法跳过设置单个数组元素。我尝试过“未定义的”#39;并且没有运气而且没有运气。

为了防止覆盖数据,必须获得需要值公式的特定区域的范围,这给我写的脚本增加了额外的层复杂性。

感谢阅读!

2 个答案:

答案 0 :(得分:5)

我认为setValues()可以用来设置公式可以大大减轻这个问题。

  var range = ss.getRange("A1:B2");
  var values = range.getValues();

  // process the array, eg values[0][0] = "=42";

  range.setValues();

答案 1 :(得分:0)

这当然解释了为什么设置值会覆盖公式,但如果有一种方法将getValuesandFormulas组合成一个数组,它会不会更好?

如果(像我一样)你被分心到getValues和getFormulas,请意识到你可以在范围之间使用copyTo来复制整个内容!