Google 课堂应用支持三种类型的动态消息项:CourseWork
、CourseWorkMaterials
和 Announcements
。本指南介绍了如何管理 CourseWork
,但所有信息流项目的 API 都是类似的。如需详细了解流项目类型及其区别,请参阅 API 资源。
CourseWork
资源表示已分配给特定课程中学生的作业,包括任何其他材料和详细信息,例如截止日期或最高得分。CourseWork
有四种子类型:作业、测验作业、简答题和单选题。Classroom API 支持以下三种子类型:作业、简答题和选择题。这些类型由 CourseWork.workType
字段表示。
除了 CourseWork
资源之外,您还可以使用 StudentSubmission
资源管理已完成的工作。
创建 CourseWork
CourseWork
只能代表课程的教师创建。
尝试代表学生或课程中不是教师的网域管理员创建 CourseWork
会导致 PERMISSION_DENIED
错误。如需详细了解 Google 课堂中的不同角色,请参阅用户类型。
使用 courses.courseWork.create
方法创建 CourseWork
时,您可以附加链接作为 materials
,如以下示例代码所示:
Java
Python
title
和 workType
字段为必填字段。所有其他字段都是选填字段。
如果未指定 state
,则 CourseWork
将以草稿状态创建。
使用指定了目标 url
的链接资源,在 CourseWork
中添加关联的素材资源。Google 课堂会自动提取 title
和缩略图网址 (thumbnailUrl
)。Google 课堂 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.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
有权检索 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.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
有权检索 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