首页 > 解决方案 > 将 Google 表格链接到 Google 表单自动按日期排序

问题描述

我使用谷歌表格让人们请求休假。一个名为 Form Approvals 的插件用于向某些可以批准或拒绝请求的人发送电子邮件。在列出响应的 Google 表格中,新条目一直在底部。

有没有办法让 Google 表单中的新条目按 Google 表格中的休息日自动排序?

我找到了这个脚本,但它不起作用:

function onEdit(event){
  var sheet = event.source.getActiveSheet();
  var editedCell = sheet.getActiveCell();
  var columnToSortBy = 2;
  var tableRange = sheet.getDataRange();
  if(editedCell.getColumn() == columnToSortBy){   
    var range = sheet.getRange(tableRange);
    range.sort( { column : columnToSortBy } );
  }
}

另外,有没有办法指定脚本在哪个工作表选项卡上运行?

标签: sortinggoogle-apps-scriptgoogle-sheetsgoogle-forms

解决方案


尝试这个:

function onEdit(e){
  var sh=e.range.getSheet();
  if(sh.getName()!="Your desired sheet name")return;
  if(e.range.columnStart==2){   
    sh.getDataRange().sort({ column:2});
  }
}

许多新程序员尝试从脚本编辑器运行这些 onEdit(e) 函数。不幸的是,这不起作用,因为 e 参数期望由事件触发器填充。如果没有事件对象,您通常会收到一个错误,例如无法从未定义中读取属性范围,因为 e 尚未被事件触发器填充。

我通过确保我正在编辑正确的工作表和正确的范围来测试它们,并且我使用 e.source.toast() 函数为我提供类似于 console.log() 的反馈。

如果您想了解有关事件对象的更多信息,请尝试添加 Logger.log(JSON.stringify(e)); 到函数声明后的第一行。然后通过以适当的方式编辑适当的工作表来运行它并查看日志以查看结果。


推荐阅读