谷歌表格/应用脚本:将公式复制到新行

3

我对此还比较陌生。我已经能够使用复选框触发在另一个标签页上创建新行的操作。在这个新的标签页上,有一列包含公式。当创建新行时(创建在第一行之前),我希望新行中也有该公式。以下是我目前的进展:

  if(sheet.getSheetName() == CLIENTS) {
    var checkCell = ss.getActiveCell();
    var checked = checkCell.getValue();
    var clientNameCell = checkCell.offset(0,-8).getValue();
    var clientType = checkCell.offset(0,-7).getValue();
    var sessionChargeCell = checkCell.offset(0, -6).getValue();
    var groupChargeCell = checkCell.offset(0,-5).getValue();
    var softwareFee = checkCell.offset(0,-4).getValue();
    var billFee = checkCell.offset (0,-3).getValue();
    var targetSheet = ss.getSheetByName("Client Billing Projections");
    var lCol = targetSheet.getLastColumn();
    if (checkCell.getColumn() == NEWCLIENTCHECK && checked == true) {
      var target = targetSheet.getRange(2, 1, 1, lCol);
      var formulas = target.getFormulas();
      targetSheet.insertRowBefore(2);
      var newRow = targetSheet.getRange(2,1,2,lCol);
      newRow.setFormulas(formulas);
    }
  }

我想我卡在了targetSheet.insertRowBefore(2);这行代码之后。我认为与我的getFormulas和setFormulas的使用有关,但我真的无法理解它。这里没有语法错误。如你所见,我已经从我的第一个表(CLIENTS)中收集了值;我打算将其复制到另一个选项卡上,但我也必须将公式复制过来。任何帮助将不胜感激。 这是该表格的示例,其中已经有很多工作代码。你需要查看的内容主要在222-238行之间。到目前为止,其他一切都运作良好。

为了正确理解您的情况,能否提供一个样本电子表格和脚本以复制您的问题?当然,请删除您的个人信息。 - Tanaike
请参考如何提问来改进您的问题,正如@Tanaike所说,请包含一个样本表格,其中有您的问题的复制品。 - Raserhin
我添加了一个示例链接。已移除信息。 - Stephen Foltz
谢谢您的回复并提供样本电子表格。基于此,我提出了一个修改后的脚本作为答案。请问您能否确认一下?如果我误解了您的问题,那不是您想要的方向,我很抱歉。 - Tanaike
1个回答

1
  • 脚本运行时,会在 Client Billing Projections 的工作表中的第2行插入一行新数据。
  • 您想要将公式放在插入行的"N"列。

如果我的理解是正确的,那么这个修改怎么样?

修改点:

  • 在您的脚本中,公式通过 var target = targetSheet.getRange(2, 1, 1, lCol); 获取,并使用 var formulas = target.getFormulas() 进行检索。这是包括一个行的二维数组。然后使用 var newRow = targetSheet.getRange(2,1,2,lCol)newRow.setFormulas(formulas) 将检索到的公式放置。在这种情况下,formulas 具有包括2行的二维数组。
    • 我认为您的问题可能是这个原因。

修改后的脚本:

当您的脚本被修改后,请按如下方式进行修改。

var newRow = targetSheet.getRange(2,1,2,lCol);

var newRow = targetSheet.getRange(2,1,1,lCol);

参考资料:


谢谢,你做到了!我想这只是我错过的一些简单的东西。我只是不知道那是什么。这个方法解决了问题。 - Stephen Foltz
@Stephen Foltz 谢谢您的回复。我很高兴您的问题得到了解决。也谢谢您。 - Tanaike

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接