Google 脚本 .setFormula() 仅适用于显式字符串
Google script .setFormula() only working with explicit string
在 Google sheets 中,我在此代码编辑的单元格中得到一个 "formula parse error":
var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormula);
但是如果我按如下方式更改代码,它就可以正常工作(只在最后一行进行更改):
var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormulaA1);
wholeFormula
和 wholeFormulaA1
应该相同。为什么 Google 表格对它们的处理方式不同?
我认为这是某种重新计算错误。如果我 运行 上面的第一个代码示例,并且单元格显示 #ERROR!
,我可以通过双击单元格并按键盘上的 ENTER 来修复它。这会强制 sheet 重新计算(我猜?),并且公式的正确结果显示在单元格中。
但是如何让 Google 表格在使用第一个代码示例时自动更新单元格?
我猜你最后错过了 )
,试试:
var try = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0))';
要强制脚本重新计算公式,请使用 SpreadsheetApp.flush();
I can fix it by double clicking the cell and hitting ENTER on the
keyboard. This forces the sheet to recalculate (I guess?), and the
proper result of the formula is displayed in the cell.
我认为当您手动重新输入公式时,它会检查是否遗漏了 )
并自动修复。通过脚本输入公式时不会出现这种情况。
在 Google sheets 中,我在此代码编辑的单元格中得到一个 "formula parse error":
var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormula);
但是如果我按如下方式更改代码,它就可以正常工作(只在最后一行进行更改):
var A1one = 'C4';
var A1two = 'B4';
var A1three = 'B4';
var wholeFormula = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0)';
var wholeFormulaA1 = '=if(today()<D,,C4+if(isNumber(B4),B4,0))';
trackCell1.setFormula(wholeFormulaA1);
wholeFormula
和 wholeFormulaA1
应该相同。为什么 Google 表格对它们的处理方式不同?
我认为这是某种重新计算错误。如果我 运行 上面的第一个代码示例,并且单元格显示 #ERROR!
,我可以通过双击单元格并按键盘上的 ENTER 来修复它。这会强制 sheet 重新计算(我猜?),并且公式的正确结果显示在单元格中。
但是如何让 Google 表格在使用第一个代码示例时自动更新单元格?
我猜你最后错过了 )
,试试:
var try = '=if(today()<D,,' + A1one + '+if(isNumber(' + A1two + '),' + A1three + ',0))';
要强制脚本重新计算公式,请使用 SpreadsheetApp.flush();
I can fix it by double clicking the cell and hitting ENTER on the keyboard. This forces the sheet to recalculate (I guess?), and the proper result of the formula is displayed in the cell.
我认为当您手动重新输入公式时,它会检查是否遗漏了 )
并自动修复。通过脚本输入公式时不会出现这种情况。