在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);
wholeFormula
和wholeFormulaA1
应该相同。为什么Google表格会以不同的方式对待它们?
我认为这是某种重新计算错误。如果我运行上面的第一个代码示例,并且单元格显示#ERROR!
,我可以通过双击单元格并按键盘上的ENTER来修复它。这会强制工作表重新计算(我猜?),公式的正确结果显示在单元格中。
但是,在使用第一个代码示例时,如何让Google表格自动更新单元格?
答案 0 :(得分:2)
我猜你最后错过了)
,请尝试:
var try = '=if(today()<D$1,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0))';
要强制脚本重新计算公式,请使用SpreadsheetApp.flush();
我可以通过双击单元格并按下ENTER键来修复它 键盘。这迫使表重新计算(我猜?),并且 公式的正确结果显示在单元格中。
我认为当您手动重新输入公式时,它会检查是否错过)
并自动修复此问题。当您通过脚本输入公式时,这不会发生。