Google电子表格:向特定列添加行?

时间:2015-05-21 14:57:20

标签: google-apps-script google-docs

我有一个链接到表单的电子表格。默认情况下,表单提交会附加到电子表格的底部。我想要它,所以最新的提交将出现在顶部,因此我创建了另一个电子表格并使用公式=SORT('Form Responses'!A1:F, 1, 0)按降序复制响应。这非常有效。

现在我想要的是在排序电子表格上有另一列,以便为表单响应添加注释。问题是,当我提交另一个表单响应时,我所做的任何评论都不会向下移动。每当提交另一个表单响应时,我想在comments列中添加另一行。我该怎么做?

**编辑:我实施了如下所示的解决方案。我最终摆脱了第二个电子表格和= SORT函数,只使用了一个链接到电子表格onFormSubmit事件的脚本

2 个答案:

答案 0 :(得分:0)

问题是您使用的动态公式与静态列结合使用。如果您希望它以您说话的方式工作,请尝试以下选项之一。

  1. 您可以将评论添加到“表单提交”选项卡,然后您的排序将在第二个选项卡上运行。

  2. 您可以使用App Script并使用onFormSubmit触发器将响应复制到工作表的顶部,而不是= sort函数。

答案 1 :(得分:0)

我最终摆脱了第二个电子表格和= SORT函数,只使用链接到电子表格的onFormSubmit事件的脚本。我想出了一个使用脚本编辑器的解决方案。

function moveLastRowToTop() {

  var spreadSheet = SpreadsheetApp.getActive();
  var activeSheet = spreadSheet.getActiveSheet();
  var lastRow = activeSheet.getLastRow(); 
  var lastCol = activeSheet.getLastColumn();
  //get range of row to copy
  var range = activeSheet.getRange(lastRow+1,1,1,lastCol);
  //insert a new row at the top of the sheet
  activeSheet.insertRowsAfter(1, 1);
  //copy last row contents to newly created row
  range.copyTo(activeSheet.getRange(2, 1, 1, lastCol), {contentsOnly:false});
  //delete last row
  activeSheet.deleteRow(lastRow+1);
}