Google Classroom の外部で添付ファイルを作成する

このガイドでは、ウェブサイトまたはアプリケーションでアドオンの添付ファイルを作成する方法について説明します。操作は、CourseWork API エンドポイントを使用して課題を作成する場合と同様です。このジャーニーを実装すると、ユーザーはウェブサイトまたはアプリからアドオンの添付ファイルを作成できます。

ワークフロー

アタッチメントの作成フローの概要は次のとおりです。

  1. 教師ユーザーがウェブサイトまたはアプリを開き、生徒に割り当てるコンテンツを選択します。
  2. ユーザーがアドオン アタッチメントを作成できることを確認します
  3. ユーザーがアドオンの添付ファイルを作成できない場合は、選択したコンテンツの URL をリンク マテリアルとして指定して、CourseWork の課題を作成します。
  4. ユーザーがアドオンの添付ファイルを作成できる場合は、次のようにします。
    1. 課題を作成します。
    2. 選択したコンテンツにリンクするアドオン アタッチメントを作成し、新しい課題に関連付けます。
  5. 課題が正常に作成されたことを教師に伝えます。

各アクションについては、以降のセクションで説明します。

ユーザーがアドオン アタッチメントを作成できるかどうかを確認する

管理者は、対象となるユーザーに代わってアドオン アタッチメントを作成できます。対象となるユーザーは、CourseWork の課題を作成するコースの教師であり、Google Workspace for Education の Teaching & Learning エディションまたは Education Plus エディションのライセンスが割り当てられているユーザーです。

まず、ユーザーがアドオン アタッチメントを作成できるかどうかを判断します。これを行うには、CREATE_ADD_ON_ATTACHMENT 機能パラメータを使用して userProfiles.checkUserCapability エンドポイントにリクエストを送信します。レスポンスのブール値 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(f'User eligibility for course {course_id}'
      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 をクリックして、サイトのコンテンツを新しいタブで開くことができます。

教材へのリンクを含む CourseWork 課題の下書き

図 1. リンク マテリアルを含む CourseWork 課題の下書きの教師ビュー。

対象ユーザー

ユーザーがアドオンの添付ファイルを作成できる場合は、次の操作を行います。

  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")}'
  )

アドオンは Classroom の添付カードとして表示されます。リクエストで指定された URL は、ビューごとに適切な iframe で開きます。