Google脚本.setFormula()仅使用显式字符串

时间:2017-09-01 01:04:57

标签: google-sheets refresh formula custom-function

在Google表格中,我收到了一个"公式解析错误"在单元格中,此代码编辑:

var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D$1,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D$1,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormula);

但是,如果我按如下方式更改代码,它可以正常工作(只有更改在最后一行):

var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D$1,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D$1,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormulaA1);

wholeFormulawholeFormulaA1应该相同。为什么Google表格会以不同的方式对待它们?

我认为这是某种重新计算错误。如果我运行上面的第一个代码示例,并且单元格显示#ERROR!,我可以通过双击单元格并按键盘上的ENTER来修复它。这会强制工作表重新计算(我猜?),公式的正确结果显示在单元格中。

但是,在使用第一个代码示例时,如何让Google表格自动更新单元格?

1 个答案:

答案 0 :(得分:2)

我猜你最后错过了),请尝试:

var try = '=if(today()<D$1,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0))';

要强制脚本重新计算公式,请使用SpreadsheetApp.flush();

  

我可以通过双击单元格并按下ENTER键来修复它   键盘。这迫使表重新计算(我猜?),并且   公式的正确结果显示在单元格中。

我认为当您手动重新输入公式时,它会检查是否错过)并自动修复此问题。当您通过脚本输入公式时,这不会发生。