Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Sheets/Apps脚本将公式复制到新行_Javascript_Google Apps Script_Google Sheets_Google Sheets Formula - Fatal编程技术网

Javascript Google Sheets/Apps脚本将公式复制到新行

Javascript Google Sheets/Apps脚本将公式复制到新行,javascript,google-apps-script,google-sheets,google-sheets-formula,Javascript,Google Apps Script,Google Sheets,Google Sheets Formula,对这一点还是相当陌生的。我已经能够使用复选框在单独的选项卡上触发新行的创建。在此新选项卡上,有一列包含公式。创建新行时(在第一行之上),我希望在新行中使用公式。以下是我到目前为止的情况: if(sheet.getSheetName() == CLIENTS) { var checkCell = ss.getActiveCell(); var checked = checkCell.getValue(); var clientNameCell = checkCell.o

对这一点还是相当陌生的。我已经能够使用复选框在单独的选项卡上触发新行的创建。在此新选项卡上,有一列包含公式。创建新行时(在第一行之上),我希望在新行中使用公式。以下是我到目前为止的情况:

  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有关,但我真的无法理解。这里没有语法错误。如您所见,我已经从我的第一张表(客户)中收集了值;我打算把它复制到另一个选项卡上,但我也必须把公式复制起来。任何帮助都将不胜感激

那里已经有很多工作代码了。这里您将看到的大部分内容可能在第222-238行之间。到目前为止,其他一切都有效。

  • 运行脚本时,将在
    客户计费预测表的第2行插入新行
  • 您希望将公式放在插入行的“N”列中
如果我的理解是正确的,这次修改怎么样

修改点:
  • 在脚本中,公式由
    var-formulas=target.getFormulas()从
    var-target=targetSheet.getRange(2,1,1,lCol)检索。这是包含一行的二维数组。使用
    newRow.setFormulas(formulas)
    var newRow=targetSheet.getRange(2,1,2,lCol)
    放置检索到的公式。在本例中,
    公式
    具有包含2行的二维数组。
    • 我想你的问题可能是这个原因
修改脚本: 修改脚本时,请按以下方式修改

发件人: 致: 参考:

为了正确了解您的情况,您能否提供一份样本电子表格和脚本以复制您的问题?当然,请删除您的个人信息。请参考以尝试改进您的问题,并且请按照@Tanaike所说的,包括一份样本表,其中有您问题的副本。我添加了一个示例链接。删除信息感谢您回复并提供电子表格示例。从中,我提出了一个修改后的脚本作为答案。你能确认一下吗?如果我误解了你的问题,而这不是你想要的方向,我道歉。谢谢你,你做到了!我想我错过了一些简单的事情。我只是不知道那是什么。斯蒂芬·福尔茨:谢谢你的回答。我很高兴你的问题解决了。也谢谢你。
var newRow = targetSheet.getRange(2,1,2,lCol);
var newRow = targetSheet.getRange(2,1,1,lCol);