【问题标题】:Trigger onEdit() upon insert row在插入行时触发 onEdit()
【发布时间】:2020-07-18 23:19:27
【问题描述】:

TL;DR:我有一个包含运行现金总额的电子表格,我想为其创建一个简单的脚本来运行以清理余额列的公式,并在插入新行时触发该公式.

步骤:

  1. this simplified example sheet 中,请注意(从单元格 D3 向下)列 D 将以前的余额与新的收入/成本相加以计算新的余额
  2. 用户手动在第 5 行上方插入一行
  3. 用户为新条目输入 -$500 成本(在单元格 C5 中)

目前的结果:

此新行项目不会反映在运行总计中,EOW 余额(单元格 D11)显示为 1,253 美元,而不是所需的 753 美元。因此,用户必须选择单元格 D4,并通过 D5 和 D6 自动填充其公式,然后 EOW 余额将显示所需的 753 美元。

自动填充部分可以通过如下脚本实现:

  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getCurrentCell().offset(-1, 0).activate();
  var destinationRange = spreadsheet.getActiveRange().offset(0, 0, 3);
  spreadsheet.getActiveRange().autoFill(destinationRange, SpreadsheetApp.AutoFillSeries.DEFAULT_SERIES);
  spreadsheet.getCurrentCell().offset(0, 0, 3, 1).activate();

期望的结果:

我的要求是在插入行后立即自动触发上述脚本 sn-p(步骤 1)。我猜脚本触发器需要onEdit()INSERT_ROW,但希望得到有关如何合并它的指针。

【问题讨论】:

  • 你试过onChange吗?有关详细信息,请参阅tag info page

标签: google-apps-script google-sheets


【解决方案1】:

SportyJorday,我建议您根本不需要脚本。试试这个:

1.) 将当前位于单元格 D2 中的 1000 美元移至 C2。由于您没有使用实际会计借记/贷记(即两栏)会计,因此将其放在那里是有意义的。

2.) 删除 D:D、标题和所有内容。

3.) 将以下数组公式放入现在为空的单元格 D1:

=ArrayFormula({"Balance";IF(B2:B<>"",MMULT(TRANSPOSE((ROW(C2:C)<=TRANSPOSE(ROW(C2:C)))*C2:C),(C2:C)^0),"")})

4.) 如果尚未将 D:D 格式化为货币。

在此设置中,您可以毫无问题地在上面添加行(或在下面添加空白行) - 并且不需要脚本。

【讨论】:

  • 完美。搞定了。谢谢!
  • 感谢您的反馈。很高兴能够提供比您想象的更简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 2018-02-09
  • 1970-01-01
相关资源
最近更新 更多