我正在使用谷歌应用脚本来构建自定义电子表格。为了提高脚本的渲染速度,我首先构建一个输出值数组,然后使用setValues()
一次构建电子表格。
当我尝试使用setFormulas()
将公式添加到电子表格中时,它也会覆盖我的所有值。所以现在我有一个案例setValues()
覆盖我的公式,setFormulas()
覆盖我的值。
有没有办法可以为输出数组中的特定元素指定掩蔽值,以便这些元素不会覆盖电子表格中已有的数据?
理想情况下,我会将输出数组的每个元素初始化为此屏蔽值,然后只有非屏蔽元素才会显示在电子表格中。
答案 0 :(得分: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);
}
希望有所帮助!
答案 1 :(得分:0)
不幸的是,setValues()
或setFormulas()
方法不支持屏蔽。如果给setValues()
方法一个公式,它应该正确设置它,因此您可以在一次调用setValues()
中设置值和公式。
range.setValues([['foo', '=LEN("bar")']]);