5

我正在使用谷歌应用程序脚本来构建自定义电子表格。为了提高脚本的渲染速度,我首先构建了一个输出值数组,然后用于setValues()一次构建电子表格。

当我尝试将公式添加到电子表格中时,setFormulas()它也会覆盖我的所有值。所以现在我遇到了一个setValues()覆盖我的公式并setFormulas()覆盖我的值的案例。

有没有办法可以为输出数组中的特定元素指定掩码值,以便这些元素不会覆盖电子表格中已有的数据?

理想情况下,我会将输出数组的每个元素初始化为此屏蔽值,然后只有非屏蔽元素会显示在电子表格中。

4

2 回答 2

3

对于通过 Google 找到此内容的任何人,使用 setValues() 公式现在似乎可以在新工作表中使用。

更具体地说,我使用这样的代码在工作表上完成工作后将公式放回:

function setValuesAndFormulas() {
  var sheet = SpreadsheetApp.getActive().getActiveSheet();
  var range = sheet.getDataRange();
  var values = range.getValues();
  var formulas = range.getFormulas();

  for (var i = 0; i < values.length; i++) {
    for (var j = 0; j < values[i].length; j++) {
      if (formulas[i][j].charAt(0) == "=") {
        values[i][j] = formulas[i][j];
      }
    }
  }

  range.setValues(values);
}

希望有帮助!

于 2014-10-14T01:25:28.793 回答
0

setValues()不幸的是, orsetFormulas()方法都不支持屏蔽。如果为方法提供了公式,则setValues()它应该正确设置它,因此您可以在一次调用中同时设置值和公式setValues()

range.setValues([['foo', '=LEN("bar")']]);
于 2013-01-30T14:47:19.197 回答