Javascript 通过谷歌表格注册班级

Javascript 通过谷歌表格注册班级,javascript,forms,google-sheets,Javascript,Forms,Google Sheets,我正在尝试制作一个与谷歌表格链接的谷歌表格,用于班级注册。随着这个过程的进行,他们希望学生选择自己的课程,然后让这些课程通过老师的审核,以通过或被拒绝。我目前面临的唯一问题是根据他们的老师将数据分成不同的表格。在提交表单后,我最近发现了一个代码,可以这样排序,但必须有一些用户输入,而不是表单响应才能工作: 如果用户按下表单上的“提交表单”按钮并提交表单,是否有办法使其自动将行移动到新的工作表中 /** *根据第6列中的条件将数据行移动到另一个电子表格,以使用与第4列中的值相同的名称创建工作表。

我正在尝试制作一个与谷歌表格链接的谷歌表格,用于班级注册。随着这个过程的进行,他们希望学生选择自己的课程,然后让这些课程通过老师的审核,以通过或被拒绝。我目前面临的唯一问题是根据他们的老师将数据分成不同的表格。在提交表单后,我最近发现了一个代码,可以这样排序,但必须有一些用户输入,而不是表单响应才能工作:

如果用户按下表单上的“提交表单”按钮并提交表单,是否有办法使其自动将行移动到新的工作表中

/**
*根据第6列中的条件将数据行移动到另一个电子表格,以使用与第4列中的值相同的名称创建工作表。
*/
功能OneEdit(e){
//请参见图纸事件对象文档
// https://developers.google.com/apps-script/guides/triggers/events#google_sheets_events
var ss=e.来源;
var s=ss.getActiveSheet();
var r=e.范围;
//允许您修改操作和移动列在表单响应工作表中的位置
var=4;
var-nameCol=6;
//获取活动单元格的行和列。
var rowIndex=r.getRowIndex();
var colIndex=r.getColumnIndex();
//获取活动工作表中的列数。
//-1删除我们的“操作/状态”列
var colNumber=s.getLastColumn()-1;
//如果我们的“行动/状态”列更改为“ok do stuff”
如果(e.value==“提交表单”&&colIndex==actionCol){
//获取我们的目标工作表名称-在本例中,我们使用优先级列
var targetSheet=s.getRange(rowIndex,nameCol).getValue();
//如果工作表存在,请执行更多操作
如果(ss.getSheetByName(targetSheet)){
//设定我们的目标表和目标范围
var targetSheet=ss.getSheetByName(targetSheet);
var targetRange=targetSheet.getRange(targetSheet.getLastRow()+1,1,colNumber);
//获取我们的源范围/行
var sourceRange=s.getRange(rowIndex,1,1,colNumber);
//新工作表显示:“无法从表单数据中剪切。请改用复制。”
sourceRange.copyTo(targetRange);
}
}

}
除非您希望能够编辑第二张工作表中的数据,否则不需要自定义代码。您可以使用=QUERY()函数将给定教师的所有条目放入该工作表中。因此,在thodges表的单元格A1中,放置:

=QUERY("Form Responses 6"!A1:M, "select * where F = 'thodges', 1)
这将按输入的顺序显示条目,您可以为教师的操作或使用添加其他列

如果您只需要一个列表,并且希望项目按特定顺序排列,则可以使用其他语法,例如添加“按C排序”或在

否则,请将函数名更改为OnEdit以外的名称,并使其生效