如何在脚本端检查Google Classroom中标记为Excused的学生提交状态?
Google Classroom 作业「Excused」状态脚本检测方案
核心判断逻辑(基于现有字段组合)
由于官方暂未在StudentSubmission对象中添加明确的excused字段,可通过提交状态+成绩字段的组合来识别该状态:
- 标记为Excused的提交,
state会被设为"GRADED" - 同时
assignedGrade和draftGrade均为null(未定义状态)
对应Google Apps Script代码示例:
function detectExcusedSubmissions(courseId, assignmentId) { const submissions = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, assignmentId); if (!submissions.studentSubmissions) return; submissions.studentSubmissions.forEach(sub => { const isExcused = sub.state === "GRADED" && sub.assignedGrade === null && sub.draftGrade === null; if (isExcused) { console.log(`学生ID ${sub.userId} 的提交已标记为Excused`); } }); }
备选方案:检查提交历史记录
部分场景下,可通过遍历submissionHistory字段,查找是否存在标记为Excused的操作记录(该字段内容可能因API版本或功能更新有所变化):
function checkExcusedFromHistory(courseId, assignmentId) { const submissions = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, assignmentId); if (!submissions.studentSubmissions) return; submissions.studentSubmissions.forEach(sub => { if (!sub.submissionHistory) return; const hasExcusedAction = sub.submissionHistory.some(history => history.actionType === "EXCUSED" || history.description?.toLowerCase().includes("excused") ); if (hasExcusedAction) { console.log(`学生ID ${sub.userId} 的提交已标记为Excused`); } }); }
长期解决方案
由于该状态暂未纳入官方文档,建议向Google Workspace开发者支持提交反馈,要求:
- 在
StudentSubmission对象中新增明确的excused布尔字段 - 更新官方API文档,明确Excused状态对应的字段变化规则
内容的提问来源于stack exchange,提问作者Adam Pieroni
相关产品推荐
相关产品推荐

