每次提交表单时使用触发器对工作表进行排序

时间:2016-04-29 21:54:19

标签: google-apps-script google-sheets google-form

我试图让Google表格在提交表单时自动排序。我已经能够设置脚本以使用以下内容进行排序,但它仅在手动编辑电子表格时有效(而不是当新数据来自表单时)。

function onEdit(event){
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();

  var columnToSortBy = 6;
  var tableRange = "A2:F100";

  if(editedCell.getColumn() == columnToSortBy){
  var tableRange = "A2:F100";

 if(editedCell.getColumn() == columnToSortBy){
 var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy } );
  }
}

我需要设置一个触发器,以便在提交表单时执行此操作。我在Google Developers上发现了这一点,但我不确定在下面使用什么(" myFunction"):

var sheet = SpreadsheetApp.getActive();
ScriptApp.newTrigger("myFunction")
 .forSpreadsheet(sheet)
.onFormSubmit()
 .create();

1 个答案:

答案 0 :(得分:3)

表单提交不是编辑,因此onEdit触发器在这里没用。相反,使用以下简单函数和可安装触发器在表单提交上。手动设置触发器很容易:在脚本编辑器中,转到参考资料>当前项目的触发器,并添加:

trigger

功能:

function sortSheet() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var columnToSortBy = 6;
  var headers = 1;   // number of header rows, usually 1
  var range = sheet.getRange(headers + 1, 1, sheet.getLastRow() - headers, sheet.getLastColumn());
  range.sort( { column : columnToSortBy } );
}