【问题标题】:Google script .setFormula() only working with explicit string谷歌脚本 .setFormula() 仅适用于显式字符串
【发布时间】:2017-09-01 01:04:57
【问题描述】:

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

【问题讨论】:

    标签: google-sheets refresh formula custom-function


    【解决方案1】:

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

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


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

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

    我认为当您手动重新输入公式时,它会检查 ) 是否丢失并自动修复。通过脚本输入公式时不会出现这种情况。

    【讨论】:

      猜你喜欢
      • 2022-07-28
      • 2014-08-05
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 1970-01-01
      • 2012-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多