このガイドでは、ウェブサイトまたはアプリケーションでアドオンの添付ファイルを作成する方法について説明します。 操作は、CourseWork API エンドポイントを使用して課題を作成する場合と似ています。この手順を実装すると、ユーザーはウェブサイトまたはアプリケーションからアドオンの添付ファイルを作成できるようになります。
ワークフロー
添付ファイル作成の手順の概要は次のとおりです。
- 教師ユーザーがウェブサイトまたはアプリを開き、生徒に割り当てるコンテンツを選択します。
- ユーザーがアドオンの添付ファイルを作成できることを確認します。
- ユーザーがアドオンの添付ファイルを作成できない 場合は、選択したコンテンツの URL をリンク素材として使用して、CourseWork 課題を作成します。
- ユーザーがアドオンの添付ファイルを作成できる 場合は、次の操作を行います。
- 課題を作成します。
- 選択したコンテンツにリンクするアドオンの添付ファイルを作成し、新しい課題に関連付けます。
- 課題が正常に作成されたことを教師に通知します。
各操作については、以下のセクションで説明します。
ユーザーがアドオンの添付ファイルを作成できるかどうかを確認する
要件を満たすユーザーに代わってアドオンの添付ファイルを作成できます。対象ユーザーとは、CourseWork 課題を作成しようとしているコースの教師であり、Teaching &Learning または Education Plus エディションの Google Workspace for Education ライセンスが割り当てられているユーザーです。
まず、ユーザーがアドオンの添付ファイルを作成できるかどうかを判断します。これを行うには、userProfiles.checkUserCapability エンドポイントに
、CREATE_ADD_ON_ATTACHMENT 機能パラメータを指定してリクエストを送信します。レスポンスのブール値 allowed フィールドを確認します。値が true の場合、ユーザーはアドオンの添付ファイルを作成できます。
CREATE_ADD_ON_ATTACHMENT 機能を持つユーザーのアドオンの添付ファイルを作成するリクエストが成功するとは限りません。たとえば、ユーザーが教師ではないコースで、ユーザーに代わってアドオンの添付ファイルを作成しようとすると、403 レスポンス エラーが返されます。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}.')
ユーザーが対象かどうかによって処理を分岐する
ユーザーが対象かどうかによって、ユーザーのアドオンの添付ファイルを作成できるかどうかが決まります。
対象外のユーザー
ユーザーがアドオンの添付ファイルを作成できない場合は、ユーザーが選択したコンテンツの URL を 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 課題の教師ビュー。
対象ユーザー
ユーザーがアドオンの添付ファイルを作成できる場合は、次の操作を行います。
- 添付ファイルなしで新しい
CourseWork課題を作成します。 - アドオンの添付ファイルを作成します。
- 新しく作成した
課題の
idにAddOnAttachment'sitemIdを設定します。 - サポートする各ビューで、ユーザーが選択したコンテンツの URL を指定してください。
- 新しく作成した
課題の
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")}'
)
アドオンは Classroom に添付カードとして表示されます。リクエストで指定された URL は、各ビューの適切な iframe で開きます。