在 Google 课堂之外创建附件

本指南介绍了如何在网站或应用中创建插件附件。 这些互动与使用 CourseWork API 端点创建作业类似。实现此历程,以便用户通过您的网站或应用创建插件附件。

工作流程

概括来讲,附件创建流程如下:

  1. 教师用户打开您的网站或应用,然后选择要布置给学生的内容。
  2. 检查用户是否可以创建插件附件
  3. 如果用户无法创建插件附件,请创建一个 CourseWork 作业,并将所选内容的网址作为链接材料。
  4. 如果用户可以创建插件附件,请执行以下操作:
    1. 创建作业。
    2. 创建指向所选内容的插件附件,并将其与新作业相关联。
  5. 告知教师作业已成功创建。

以下各部分介绍了每项操作。

检查用户是否可以创建插件附件

您可以代表符合条件的用户创建插件附件。符合条件的用户是指尝试在其中创建 CourseWork 作业的课程中的教师,并且已获得 Google Workspace 教育版的教与学升级版或教育 Plus 版许可。

首先,确定用户是否可以创建插件附件。为此,您可以向 userProfiles.checkUserCapability 端点发出包含 CREATE_ADD_ON_ATTACHMENT 功能参数的请求。检查响应中的布尔值 allowed 字段;如果值为 true,则表示用户有权创建插件附件。

Python

eligibility_response = (   classroom_service.userProfiles()   .checkUserCapability(     userId="me",     capability="CREATE_ADD_ON_ATTACHMENT",     # The previewVersion is necessary while the method is available in the     # Workspace Developer Preview Program.     previewVersion="V1_20240930_PREVIEW",   ).execute() ) is_create_attachment_eligible = (   eligibility_response.get('allowed') ) print('User eligibility for add-on attachment creation: '       f'{is_create_attachment_eligible}.') 

根据用户的资格条件进行路由

资格条件决定了您是否可以为用户创建插件附件。

不符合条件的用户

如果用户无法创建插件附件,则创建一个新的 CourseWork 作业,并将用户选择的内容网址作为 Link

Python

if not is_create_attachment_eligible:   coursework = {     'title': 'My CourseWork Assignment with Link Material',     'description': 'Created using the Classroom CourseWork API.',     'workType': 'ASSIGNMENT',     'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.     'maxPoints': 100,     'materials': [       {'link': {'url': my_content_url}}     ]   }    assignment = (     service.courses()     .courseWork()     .create(courseId=course_id, body=coursework)     .execute()   )    print(     f'Link Material assignment created with ID: {assignment.get("id")}'   ) 

响应包含所请求课程中的作业,并附有相应内容。用户可以点击 Link 在新标签页中打开您网站上的内容。

创建包含链接资料的 CourseWork 作业草稿

图 1. 教师查看包含链接资料的作业草稿的视图。

符合条件的用户

如果用户可以创建插件附件,请执行以下操作。

  1. 创建不含任何附件的新 CourseWork 作业。
  2. 创建插件附件。

Python

if is_create_attachment_eligible:   coursework = {     'title': 'My CourseWork Assignment with Add-on Attachment',     'description': 'Created using the Classroom CourseWork API.',     'workType': 'ASSIGNMENT',     'state': 'DRAFT',  # Set to 'PUBLISHED' to assign to students.     'maxPoints': 100,   }    assignment = (     classroom_service.courses()     .courseWork()     .create(courseId=course_id, body=coursework)     .execute()   )    print(     f'Empty assignment created with ID: {assignment.get("id")}'   )    attachment = {     'teacherViewUri': {'uri': teacher_view_url},     'studentViewUri': {'uri': student_view_url},     'studentWorkReviewUri': {'uri': grade_student_work_url},     'title': f'Test Attachment {test_label}',   }    add_on_attachment = (     service.courses()     .courseWork()     .addOnAttachments()     .create(       courseId=course_id,       itemId=assignment.get("id"),  # ID of the new assignment.       body=attachment,     )     .execute()   )    print(     f'Add-on attachment created with ID: {add_on_attachment.get("id")}'   ) 

该插件会以附件卡片的形式显示在 Google 课堂中。请求中指定的网址会在每个视图的相应 iframe 中打开。