本指南介绍了如何在网站或应用中创建插件附件。 这些互动类似于使用 CourseWork API 端点创建作业。实现此流程,让用户能够从您的网站或应用创建插件附件。
工作流程
概括来讲,附件创建流程遵循以下顺序:
- 教师用户打开您的网站或应用。他们选择要分配给学生的内容。
- 检查用户是否可以创建插件附件。
- 如果用户无法创建插件附件,请使用指向所选内容的网址作为链接材料创建 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}.')
根据用户的资格确定用户路径
资格决定了您是否可以为用户创建插件附件。
不符合条件的用户
如果用户无法创建插件附件,请使用用户选择的内容网址作为Link创建新的CourseWork
作业。
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,在新标签页中打开您网站上的内容。

图 1. 教师查看包含链接资料的课程作业草稿。
符合条件的用户
如果用户**可以** 创建插件附件,请执行以下操作。
- 创建新的
CourseWork作业,不包含任何附件。 - 创建插件附件。
- 将
AddOnAttachment的itemId设置为新创建的 作业的id。 - 确保为每个受支持的视图 提供指向用户选择的内容的网址。
- 将
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 中打开。