Classroom 应用支持三种类型的流项:
CourseWork、CourseWorkMaterials 和 Announcements。本指南介绍了如何管理 CourseWork,但所有流项的 API 都是类似的。如需详细了解流项类型及其
差异,请参阅 API 资源。
CourseWork 资源表示已分配给特定课程中的学生的一项作业,包括任何其他资料和详细信息,例如截止日期或最高分数。CourseWork 有四种子类型:
作业 、测验作业 、简答题 和
多项选择题 。Classroom API 支持其中三种子类型:作业、简答题和多项选择题。这些类型由
CourseWork.workType 字段表示。
除了 CourseWork 资源之外,您还可以管理已完成的工作
并使用 StudentSubmission 资源。
创建 CourseWork
CourseWork 只能代表课程的教师创建。 尝试代表学生或并非课程教师的网域管理员创建 CourseWork 会导致 PERMISSION_DENIED 错误。如需详细了解 Classroom 中的不同
角色,请参阅用户类型。
使用 CourseWork 方法创建 courses.courseWork.create 时,您可以将链接作为 materials 附加,如以下示例代码所示:
Java
Python
title 和 workType 字段是必填字段。所有其他字段都是可选字段。
如果未指定 state,则 CourseWork 将以草稿状态创建。
使用指定了目标
url的Link resource,将链接的材料包含在CourseWork中。Classroom
会自动提取 title 和缩略图网址 (thumbnailUrl)。
Classroom API 还原生支持 Google 云端硬盘和 YouTube
材料,这些材料可以采用类似的方式包含在 DriveFile
资源 或 YouTubeVideo
资源 中。
如需指定截止日期,请将 dueDate 和 dueTime 字段设置为相应的 UTC 时间。截止日期必须是未来的日期。
CourseWork 响应包含服务器分配的标识符,该标识符可用于在其他 API 请求中引用作业。
检索 CourseWork
您可以代表相应课程的学生和教师检索 CourseWork。您还可以代表网域管理员检索 CourseWork,即使他们不是课程中的教师也是如此。如需检索特定的 CourseWork,请使用 courses.courseWork.get。如需检索所有
CourseWork(可以选择匹配某些条件),请使用
courses.courseWork.list。
所需的范围取决于发出请求的用户在课程中所扮演的角色。如果用户是学生,请使用以下范围之一:
https://www.googleapis.com/auth/classroom.coursework.me.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
如果用户是教师或网域管理员,请使用以下范围之一:
https://www.googleapis.com/auth/classroom.coursework.students.readonlyhttps://www.googleapis.com/auth/classroom.coursework.students
拥有检索 CourseWork 的权限并不意味着拥有访问材料或材料元数据的权限。实际上,这意味着如果管理员不是课程的成员,则可能无法看到附加的云端硬盘文件的标题。
管理学生回答
StudentSubmission 资源表示学生为
CourseWork 完成的工作。该资源包含与工作相关的元数据,例如工作状态和成绩。创建新的 CourseWork 时,系统会为每位学生隐式创建 StudentSubmission。
以下部分介绍了管理学生回答的常见操作。
检索学生回答
学生可以检索自己提交的内容,教师可以检索其课程中所有学生的提交内容,而网域管理员可以检索其网域中所有学生的提交内容。每个 StudentSubmission 都会分配一个标识符。如果您知道标识符,请使用
courses.courseWork.studentSubmissions.get 检索提交内容。
使用 courses.courseWork.studentSubmissions.list 方法获取符合某些条件的所有
StudentSubmission 资源,如以下
示例所示:
Java
Python
通过指定 userId 参数检索属于特定学生的 StudentSubmission 资源,如以下示例所示:
Java
Python
学生由唯一 ID 或电子邮件地址标识,如
Student 资源所示。当前用户还可以使用
"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.readonlyhttps://www.googleapis.com/auth/classroom.coursework.students
如果用户是学生,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.me.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
拥有检索 StudentSubmission 的权限并不意味着拥有访问附件或附件元数据的权限。实际上,这意味着如果管理员不是课程的成员,则可能无法看到附加的云端硬盘文件的标题。
向学生回答添加附件
您可以通过附加 Link、
DriveFile 或 YouTubeVideo 资源,将链接附加到学生提交的内容。这可以通过
courses.courseWork.studentSubmissions.modifyAttachments完成,如以下
示例所示:
Java
Python
Link 附件由目标 url 定义;Classroom
会自动提取 title 和缩略图 (thumbnailUrl)。如需了解可以附加到
StudentSubmissions 的材料,请参阅
Material。
StudentSubmission 只能由课程教师或拥有该提交内容的学生修改。只有当 StudentSubmission 的
CourseWorkType 为 ASSIGNMENT 时,您才能附加 Materials。
所需的范围取决于发出请求的用户在课程中所扮演的角色。如果用户是教师,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.students
如果用户是学生,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.me