您可以使用courses.courseWork.studentSubmissions.list 获取student submissions 的列表。您只需提供courseId 和courseWorkId 作为path parameter。您还可以在请求中添加额外的query parameters。
例如,您希望将返回的学生作业限制为具有指定标识符的学生所拥有的作业。您需要将特定标识符设置为 userId 作为query parameters 的一部分
注意:您还可以循环所有学生提交的列表以处理每个提交,然后再使用courses.courseWork.studentSubmissions.return 进行返回
- 用户的数字标识符
- 用户的电子邮件地址
- 字符串文字“me”,表示请求用户
示例响应正文 (JSON):
{
"studentSubmissions": [
{
object (StudentSubmission)
}
],
"nextPageToken": string
}
StudentSubmission 包含与学生提交课程作业相关的所有信息,包括courseId、courseWorkId、id 和userId。
学生提交资源 (JSON):
{
"courseId": string,
"courseWorkId": string,
"id": string,
"userId": string,
"creationTime": string,
"updateTime": string,
"state": enum (SubmissionState),
"late": boolean,
"draftGrade": number,
"assignedGrade": number,
"alternateLink": string,
"courseWorkType": enum (CourseWorkType),
"associatedWithDeveloper": boolean,
"submissionHistory": [
{
object (SubmissionHistory)
}
],
// Union field content can be only one of the following:
"assignmentSubmission": {
object (AssignmentSubmission)
},
"shortAnswerSubmission": {
object (ShortAnswerSubmission)
},
"multipleChoiceSubmission": {
object (MultipleChoiceSubmission)
}
// End of list of possible types for union field content.
}
(更新)
关于您在 Apps Script 中使用courses.courseWork.studentSubmissions.return 时遇到的错误,
GoogleJsonResponseException:对教室.courses.courseWork.studentSubmissions.return 的 API 调用失败并出现错误:@ProjectPermissionDenied 开发者控制台项目不允许发出此请求。
发生这种情况是因为您正在尝试修改不是在 Developer Console 项目中创建的课程作业。请参考here。
示例代码:
var courseId = '2491255xxxxxx';
var courseWorkId = '2524434xxxxx'; // manually created in classroom.google.com
//1st TRY with error
var studentSubmissions = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, courseWorkId);
Logger.log(studentSubmissions.studentSubmissions[0].id);
//var ret = Classroom.Courses.CourseWork.StudentSubmissions.return({},courseId, courseWorkId, studentSubmissions.studentSubmissions[0].id);
//Logger.log(ret);
var assignment = {
title: "Test Assignment 3",
state: "DRAFT",
assigneeMode: "ALL_STUDENTS",
workType: "ASSIGNMENT"
};
//var newCourseWork = Classroom.Courses.CourseWork.create(assignment, courseId);
//2nd TRY without error
var newCourseWorkId = '2618921xxxxx';
var studentSubmissions2 = Classroom.Courses.CourseWork.StudentSubmissions.list(courseId, newCourseWorkId);
var ret = Classroom.Courses.CourseWork.StudentSubmissions.return({},courseId, newCourseWorkId, studentSubmissions2.studentSubmissions[0].id);
Logger.log(studentSubmissions2);
Logger.log(ret);
Logger.log(Classroom.Courses.CourseWork.get(courseId,newCourseWorkId));
说明:
-
在第一次尝试中,我尝试返回在https://classroom.google.com/ 创建的学生提交的课程作业。这种情况会遇到错误,因为我正在尝试修改与开发人员控制台项目无关的课程作业。您可以使用Classroom.Courses.CourseWork.get() 来检查课程作业是否有关联的开发者控制台项目,associatedWithDeveloper 属性应为 true。
-
在第二次尝试时,我先创建了一个草稿课程作业,然后在https://classroom.google.com/ 中修改创建的课程作业。一旦我完成了更改并发布了课程作业。我尝试返回学生提交的课程作业并且成功(返回应该为空/空)。它成功的原因是因为我使用 Apps Script 创建了课程作业,因此开发者控制台项目与课程作业相关联,因此我也可以使用 Apps Script 修改学生提交的内容。