2017-09-01 67 views
1

在谷歌片,我得到这个代码编辑单元中的“公式语法错误”:谷歌脚本.setFormula()只用明确的字符串工作

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表格在使用第一个代码示例时自动更新单元格?

回答

0

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

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


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

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

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

+0

那是男人,谢谢。很高兴这很简单。 :-) – user2179367

相关问题