我有一个包含具有函数/公式的单元格的表,例如:最后使用的行。我发现此脚本会创建新行,但不会复制函数/公式。如何在Google Apps脚本中实现此格式复制任务而无需手动选择和复制?

评论

如果我以前的行公式为= HTTPResponse(C4),我如何复制相同的公式但为新行添加新的单元格编号?

#1 楼

使用以下代码将公式的值也复制为普通值。通过从电子表格菜单中选择“工具”来添加代码。然后选择脚本编辑器并添加代码。确保按下“错误”按钮并验证脚本。

代码

// global 
var ss = SpreadsheetApp.getActive();

function onOpen() {
  var menu = [{name:"Add New Last Row", functionName:"addRow"}];
  ss.addMenu("Extra", menu);
}

function addRow() {
  var sh = ss.getActiveSheet(), lRow = sh.getLastRow(); 
  var lCol = sh.getLastColumn(), range = sh.getRange(lRow,1,1,lCol);
  sh.insertRowsAfter(lRow, 1);
  range.copyTo(sh.getRange(lRow+1, 1, 1, lCol), {contentsOnly:false});
}


备注

设置仅对false的contentOnly将产生标准副本。将其设置为true,将仅粘贴值。
您发现的示例脚本比粘贴值做更多的工作..... ve为您创建了一个示例文件:使用公式的行添加

评论


稍作调整,这就是我的电子表格之一所需要的。谢谢。但是我没有从手机上使用它的方法,而这正是我最需要的地方:(

–维多利亚
20 Jan 5 '20 at 0:51

#2 楼

此ArrayFormula可以执行相同的操作而无需使用脚本。在D4中输入它,它将自动在它下面的任何空白单元格中保留。

从B4开始直到单元格结束的单元格。

同时,ArrayFormula负责将自身复制到其下方的单元格中。只需确保其下方的单元格为空即可。

#3 楼

如果需要在顶部(第一行)添加新行并从第一行的顶部复制公式,则需要使用getFormulas()setFormulas()函数复制公式。如果电子表格具有标题,则可以将firstRow的值更改为2。

function addFirstRow() {
    var firstRow = 1;
    var sh = ss.getActiveSheet();
    var lCol = sh.getLastColumn();
    var range = sh.getRange(firstRow, 1, 1, lCol);
    var formulas = range.getFormulas();
    sh.insertRowsAfter(1, 1);
    newRange = sh.getRange(firstRow, 1, 1, lCol);
    newRange.setFormulas(formulas);
}


评论


嗨,丹尼斯,您是指我创建的帖子吗?我只是检查了脚本,它仍在工作。问候雅各布·扬

–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
16年6月11日在9:46

嗨,@ JacobJanTuinstra,是的,您是对的。我实际上是在尝试在顶部添加新行,并保留同一行中的公式,但是它不起作用,因为脚本试图从新创建的空行中复制数据。我将更新我的答案以反映这一点。谢谢

– dgpro
16年6月13日在8:51



嗨@DenGordo!谢谢你如果我只有要移动的值而不是公式,该如何修改呢?谢谢!

–Drewdavid
17年2月24日在17:05

哦PS-我在哪里引用我正在处理的选项卡?再次感谢。

–Drewdavid
17年2月24日在17:06

#4 楼

为了解决此问题,我使用了setFormula(range),例如:

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];

var cell = sheet.getRange("B5");
 cell.setFormula("=SUM(B3:B4)");


您的公式将相应地自动增加到行索引。可以添加onUpdate或onEdit触发器。

评论


-1;代码是如何产生的?您要添加一笔总和,但需要实际添加一行。 onUpdate触发器不存在。

–雅各布·扬·图恩斯特拉(Jacob Jan Tuinstra)
2014年6月4日4:31