Google 课堂应用支持三种类型的数据流项:CourseWork
、CourseWorkMaterials
和 Announcements
。本指南介绍了如何管理 CourseWork
,但所有数据流项的 API 都类似。如需详细了解数据流项类型及其差异,请参阅 API 资源。
CourseWork
资源表示已分配给特定课程学生的工作项,包括任何其他材料和详细信息,例如截止日期或满分。CourseWork
有四种子类型:作业、测验作业、简答题和单选题。Classroom API 支持其中的三种子类型:作业、简答题和单选题。这些类型由 CourseWork.workType
字段表示。
除了 CourseWork
资源之外,您还可以使用 StudentSubmission
资源管理已完成的工作。
创建课业
只能代表课程教师创建 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
,请使用 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
定义;Google 课堂会自动提取 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