相关疑难解决方法(0)

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

请考虑以下代码:它设置值然后在范围内设置函数,但是它会覆盖已设置的值.

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);
}
Run Code Online (Sandbox Code Playgroud)

为什么设置空公式会覆盖任何设定值,反之亦然?想知道是否有办法跳过设置单个数组元素.我试过'undefined'和'null没有运气.

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

谢谢阅读!

google-apps-script

4
推荐指数
1
解决办法
242
查看次数

设置 setFormulas() 将清除现有数据

我想保留那些没有应用公式的单元格的单元格数据。

代码片段解释了该功能。

此解决方案也覆盖值,setFormulas 不会跳过空数组元素,覆盖值

var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var Formulas = range.getFormulas();


for (var i in Formulas) {
    for (var j in Formulas[i]) {

        if (Formulas[i][j] == "") //cells which dont have the formula
        {
            //dont apply any formula, but keep the existing cell data (as it is)
        } else {
            Formulas[i][j] = '=HYPERLINK("http://www.google.com","Google")'
        }
    }
}

range.setFormulas(Formulas);
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script google-spreadsheet-api

3
推荐指数
1
解决办法
951
查看次数