Google 课堂界面支持五种类型的课业:作业、
测验作业、简答题、选择题以及
材料。Classroom API 目前支持这三种类型,
在 API 中称为 CourseWorkType
:作业、简答
和选择题。
要访问此功能,您可以使用 CourseWork 资源, 表示已布置给学生的 特定课程,包括任何其他资料和详细信息,例如 日期或最高得分。
除了 CourseWork 资源之外,您还可以管理已完成的作业
(包含 StudentSubmission
资源)。以下部分介绍了
。
创建作业
只能代表课程的教师创建作业,并且
尝试在课程中代表学生创建作业会导致
出现 403 PERMISSION_DENIED
错误。同样,网域管理员也无法
针对他们未教授或尝试通过 API 教授的课程的作业
也会导致 403 PERMISSION_DENIED
错误。
使用 courses.courseWork.create
方法创建分配时,您需要
可以作为 materials
附加链接,如以下示例代码所示:
Java
Python
结果中包含由服务器分配的标识符,可用于参考 分配。
要在通过 Classroom API 创建的作业中添加链接的资料,请执行以下操作: 使用链接资源,并指定 目标网址Google 课堂会自动提取标题和缩略图。 Classroom API 还原生支持 Google 云端硬盘和 YouTube 资料, DriveFile 资源中的内容或 YouTube 视频资源 。
要指定截止日期,请将 dueDate
和 dueTime
字段设为
对应的 UTC 时间。截止日期必须是将来的日期。
检索作业和题目
您可以检索 或网域管理员创建的视频要检索特定的 课程.courseWork.get要检索全部 作业或题目(可选择符合某些条件),使用 courses.courseWork.list.
<ph type="x-smartling-placeholder">所需范围取决于发出请求的用户在 课程。如果用户是学生,请使用以下范围之一:
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
检索属于特定学生的 StudentSubmission
资源,具体方法如下:
指定 userId
参数,如以下示例所示:
Java
Python
系统会根据用户的唯一 ID 或电子邮件地址来识别学生,例如
由 Google Admin SDK 返回。当前用户还可以指代他们自己的
使用 "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
只能由课程老师或
拥有该文档的所有权的学生。只有在以下情况下,您才能附加 Materials
:
所提交学生作业的比例为 CourseWorkType
ASSIGNMENT
。
所需范围取决于发出请求的用户在 课程。如果用户是教师,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.students
如果用户是学生,请使用以下范围:
https://www.googleapis.com/auth/classroom.coursework.me
管理学生回答状态
学生回复可以取消提交、上交或发回。状态字段
StudentSubmission
中的表示当前状态。要更改状态,请调用
以下方法之一:
courses.courseWork.studentSubmissions.turnIn
courses.courseWork.studentSubmissions.return
courses.courseWork.studentSubmissions.reclaim
所有这些方法都接受空正文。示例:
Java
Python
service.courses().courseWork().studentSubmission().turnIn(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
body={}).execute()
只有拥有StudentSubmission
的学生可以上交或收回相应文件。
只能收回已上交的提交内容。课程教师只能发回
处于已交状态的 StudentSubmission
。
为学生的回答评分
StudentSubmission
资源有两个用于存储成绩的字段:
assignedGrade
(向学生报告的成绩)和draftGrade
,
这是一个暂定成绩,仅供教师查看。这些字段已更新
使用带有字段掩码的 courses.courseWork.studentSubmissions.patch
包含相应字段,如以下示例所示。
Java
Python
studentSubmission = {
'assignedGrade': 99,
'draftGrade': 80
}
service.courses().courseWork().studentSubmissions().patch(
courseId=<course ID or alias>,
courseWorkId=<courseWork ID>,
id=<studentSubmission ID>,
updateMask='assignedGrade,draftGrade',
body=studentSubmission).execute()
使用 Google 课堂界面时,教师必须等到 请先保存一份初始成绩。然后,系统会将已布置的成绩发回给 学生。应用需要模拟此行为。您的应用可以 您可以通过以下两种方式之一为学生的作业评分:
仅分配
draftGrade
。这非常有用,例如,可以让教师 对成绩进行人工审核,然后再最终确定它们。学生无法查看初始成绩。同时布置
draftGrade
和assignedGrade
,以便对作业进行全面评分。
列出已分配的成绩
您可以浏览特定课程作业的
courses.courseWork.studentSubmissions.list
方法的响应对象:
Java
Python
response = coursework.studentSubmissions().list(
courseId=course_id,
courseWorkId=coursework_id,
pageSize=10).execute()
submissions.extend(response.get('studentSubmissions', []))
if not submissions:
print('No student submissions found.')
print('Student Submissions:')
for submission in submissions:
print(f"Submitted at:"
f"{(submission.get('userId'), submission.get('assignedGrade'))}")