Google 课堂界面支持五种课业类型:作业、测验作业、简答题、单选题和资料。Classroom API 目前支持以下三种类型(在 API 中称为 CourseWorkType
):作业、简答题和选择题。
如需使用此功能,您可以使用课业资源,该资源表示已分配给特定课程学生的作业或题目,包括任何其他材料和详细信息,例如截止日期或满分。
除了 CourseWork 资源之外,您还可以使用 StudentSubmission
资源管理已完成的作业。下面几部分将详细介绍这些内容。
创建作业
只能代表课程的教师创建作业,如果尝试在课程中代表学生创建作业,则会导致 403 PERMISSION_DENIED
错误。同样,网域管理员也无法为自己未教授的课程创建作业,如果尝试通过 API 执行此操作,也会导致 403 PERMISSION_DENIED
错误。
使用 courses.courseWork.create
方法创建作业时,您可以将链接附加为 materials
,如以下示例代码所示:
Java
Python
结果包含服务器分配的标识符,可用于在其他 API 请求中引用分配。
如需在通过 Classroom API 创建的作业中添加链接的资料,请使用链接资源并指定目标网址。Google 课堂会自动提取标题和缩略图。Classroom API 还原生支持 Google 云端硬盘和 YouTube 资料,这些资料可以以类似的方式包含在 DriveFile 资源或 YouTubeVideo 资源中。
如需指定截止日期,请将 dueDate
和 dueTime
字段设置为相应的世界协调时间 (UTC)。截止日期必须是将来的日期。
检索作业和题目
您可以检索由相应课程的学生和教师提供的作业和题目,也可以由网域管理员检索作业和题目。要检索特定作业或题目,请使用 Course.courseWork.get 方法。如需检索所有作业或题目(可选择符合某些条件),请使用 courses.courseWork.list。
所需范围取决于发出请求的用户在课程中拥有的角色。如果用户是学生,请使用以下某个范围:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
如果用户是教师或网域管理员,请使用以下任一范围:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
拥有检索作业或题目的权限并不意味着拥有访问资料或资料元数据的权限。实际上,这意味着,如果管理员不是课程成员,则可能看不到所附加云端硬盘文件的标题。如果您想允许管理员访问用户文件,请参阅网域级委托指南。
管理学生回答
StudentSubmission
资源表示学生对作业或题目的完成情况和成绩。创建新题目或作业时,系统会为每位学生隐式创建一个 StudentSubmission
资源。
以下部分介绍了管理学生回答的常见操作。
检索学生的回复
学生可以检索自己的提交内容,教师可以检索其课程中所有学生的提交内容,网域管理员可以检索其网域中所有学生的所有提交内容。系统会为每次提交的学生作业分配一个标识符;如果您知道该标识符,请使用 courses.courseWork.studentSubmissions.get
检索该标识符。
使用 courses.courseWork.studentSubmissions.list
方法获取符合某些条件的 StudentSubmission
资源,如以下示例所示:
Java
Python
通过指定 userId
参数,检索特定学生名下所属的 StudentSubmission
资源,如以下示例所示:
Java
Python
学生是通过 Google Admin SDK 返回的用户唯一 ID 或电子邮件地址进行识别的。当前用户还可以使用 "me"
简写形式引用自己的 ID。
您还可以获取课程中所有作业的学生提交内容。为此,请使用字面量 "-"
作为 courseWorkId
,如以下示例所示:
Java
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
Python
service.courses().courseWork().studentSubmissions().list(
courseId=<course ID or alias>,
courseWorkId='-',
userId=<user ID>).execute()
所需范围取决于发出请求的用户在课程中拥有的角色。如果用户是教师或网域管理员,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
如果用户是学生,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
拥有检索学生提交内容的权限并不意味着拥有访问附件或附件元数据的权限。实际上,这意味着,如果管理员不是课程的成员,则可能无法看到附加的云端硬盘文件的标题。如果您想允许管理员访问用户文件,请参阅全网域委托指南。
向学生回答添加附件
您可以通过附加 Link
、DriveFile
或 YouTubeVideo
资源,将链接附加到学生提交的作业中。这可以通过 courses.courseWork.studentSubmissions.modifyAttachments
来实现,如以下示例所示:
Java
Python
链接附件由目标网址定义;Google 课堂会自动提取标题和缩略图。您可以前往相应的参考页面了解其他材料。
只有课程教师或课程所有者才能修改 StudentSubmission
。只有当学生提交内容的 CourseWorkType
为 ASSIGNMENT
时,您才能附加 Materials
。
所需的范围取决于请求用户在课程中所拥有的角色。如果用户是教师,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.students
如果用户是学生,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.me