与附件互动

本页讨论了创建附件的实现细节、用户打开附件时的建议操作,以及如何处理学生提交的内容。请注意,发出这些请求时,您可能需要提供与附件相关的参数

创建连接

通过向相应的 courses.*.addOnAttachments.create 端点发出 CREATE 请求来创建连接。您的请求必须在请求正文中包含 AddOnAttachment 的实例。

创建附件时,必须提供以下字段:

  • title:附件的字符串名称。
  • teacherViewUri:附件的教师视图的 URI。
  • studentViewUri:附件的学生视图的 URI。
  • studentWorkReviewUri:教师查看学生在附件中完成的作业的 URI。此字段仅对活动类型的附件是必需的。

您可能需要添加以下一些选填字段:

  • dueDatedueTime(如果指定了附件的截止日期)。
  • maxPoints:附件的最高等级。如果您想支持成绩回传,则必须是非零值。仅适用于活动类型的附件。

如需详细了解这些字段,请参阅 AddOnAttachment 资源参考文档。

验证用户凭据和角色

学生视图 iframe学生作业检查 iframe教师视图 iframe 均旨在向用户呈现内容,而不是修改 Google 课堂作业。当其中一个视图打开时,请考虑执行以下操作:

  • 为用户获取 OAuth 凭据。
  • 根据 itemType 发出 courseWork.getAddOnContextcourseWorkMaterials.getAddOnContextannouncements.getAddOnContext 请求,以验证用户角色。
  • 检查响应中是否存在 TeacherContextStudentContext。只能返回一个,对应于用户在课程中的角色。
  • 如果当前用户是学生,且 itemTypecourseWork,则记录响应中的 submissionId 以及学生的作业。submissionIds 在插件 iframe 之间匹配,并且是传递成绩和在评分工具中向教师显示学生作业所必需的。
  • 如果插件已知道 attachmentId,则显示相应的附件界面。
  • 否则,此附件必须是从其他信息流项目或课程复制的。如需获取有关此情形的建议,请参阅处理复制的内容指南。

学生提交的作业的详细信息

典型的提交工作流程包括以下步骤:

  1. 学生启动 studentViewUri 以完成活动。
  2. 该插件使用学生凭据从 getAddOnContext 方法中检索 submissionId
  3. 插件开发者会将 submissionIdattachmentId 存储为学生作业的唯一标识符。如果教师在 Google 课堂中复制作业,您可以使用这两个参数的复合键在复制的作业中显示新附件。如需了解详情,请参阅我们的复制的内容页面。
  4. 有意查看学生作业的教师启动 studentWorkReviewUri。相应请求包含以下查询参数:courseIditemIditemTypeattachmentIdsubmissionId
  5. 插件开发者使用这四个 ID 来检索学生作业。使用 courses.courseWork.addOnAttachments.studentSubmissions 端点检索或修改学生提交的内容的相关信息。

检测提交状态

courses.courseWork.addOnAttachments.studentSubmissions 端点发出 GET 请求,以获取有关特定 submissionId 的详细信息。您会收到一个 AddOnAttachmentStudentSubmission 对象,其中包含提交的成绩 (pointsEarned) 和当前状态 (postSubmissionState)。提交状态可以是以下值之一:

  • NEW(如果学生从未访问过提交的内容)。
  • CREATED,如果学生已创建提交内容,但尚未提交。
  • TURNED_IN(如果学生已向教师提交作业)。
  • RETURNED,如果教师已将提交的作业发回给学生。
  • RECLAIMED_BY_STUDENT(如果学生尚未提交作业)。

使用此端点可在您的插件中检测学生作业的状态。然后,您可以根据返回的状态调整向学生提供的视图或选项。这可能包括以下功能:

  • 显示插件中作业的提交状态。这有助于学生避免潜在的混淆,并确保他们不会因误操作而未能上交作业。
  • 限制提交内容的编辑权限。如果作业的状态为 CREATEDRECLAIMED_BY_STUDENT,学生可能可以修改其提交的内容。如果作业的状态为 TURNED_INRETURNED,学生可能无法修改其提交的内容。

成绩和多个附件

只能使用一个插件附件来设置单个作业的成绩。如果教师创建了多个提供 maxPoints 值的活动类型附件,则只有第一个此类附件可以设置作业成绩。您可以将 maxPoints 值保持未设置状态或将其设置为零,以针对附件停用成绩回传。

设置提交内容的成绩

您可以向 courses.courseWork.addOnAttachments.studentSubmissions 端点发送 PATCH 请求来修改学生提交的内容。请求正文必须包含一个具有修改后值的 AddOnAttachmentStudentSubmission 实例。设置 pointsEarned 字段以修改提交的作业的成绩。 在 pointsEarned 中传递的值会成为教师在 Google 课堂界面中看到的草稿成绩。教师可以在将作业发回给学生之前修改初始成绩。如需详细了解如何向教师显示成绩,请参阅“Google 课堂”界面中的评分概览

请注意,只有在满足以下条件时,您才能使用 pointsEarned 设置年级:

  • 附件必须具有正 maxPoints 值。
  • 插件必须是附件的原始创建者。

另请注意,您可以通过向 addOnAttachments 端点发出 PATCH 请求来修改已创建的 AddOnAttachmentmaxPoints 值。

何时设置成绩

您可以选择何时将成绩回传到 Google 课堂。关键区别在于您是否选择存储教师的凭据,因为只有教师才能修改成绩。

您可以在两个附加时间点将成绩传递给 Google 课堂:学生完成作业时,或者教师在“学生作业审核”iframe 中打开学生的作业时。

如果您想在学生完成作业时设置成绩,则必须存储教师的离线凭据,然后在学生完成作业时检索并使用这些凭据来修改成绩。此方法具有以下潜在优势:

  • 提供无缝的成绩更新。教师无需采取任何特殊操作即可在 Google 课堂界面中填充成绩。
  • 实时了解班级在作业中的进度。 通过在学生完成附件后设置成绩,教师无需打开每份提交的作业,即可了解学生的理解程度。

请注意,此方法还允许采用异步方法来对同步进行分级。您可以定期轮询 AddOnAttachmentStudentSubmission 端点,以检测学生何时提交了作业。提交后,使用存储的凭据设置提交的作业的成绩。

如果您不想在学生会话期间加载教师的凭据,可以在教师在学生作业审核 iframe 中加载学生的提交内容时使用有效的教师凭据。不过,由于 Classroom 界面中的成绩不会实时更新,并且教师需要打开每个提交作业的“学生作业审核”iframe,因此这种方法可能无法提供特别顺畅的用户体验。

检测作业成绩的变化

教师可以在创建作业后修改 Google 课堂中的成绩设置。此类修改可能包括:

  • 更改分配的分值。
  • 更改作业的 maxPoints 值。
  • 更改作业是否应评分。

如需查看作业的当前评分设置,建议您向 courses.courseWork 端点发送 GET 请求。响应包含当前的 maxPoints 值。未评分的作业的 maxPoints 值为 null 或零。

如果您已将成绩传递回 Google 课堂,请使用 courses.courseWork.addOnAttachments.studentSubmissions 端点来获取或更改插件附件的成绩。使用 pointsEarned 字段设置成绩值。如果您的产品允许教师修改学生在特定活动中的得分,请考虑检查并视需要更新此值。