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

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

ワークフロー

添付ファイルの作成フローの概要は次のとおりです。

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

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

ユーザーがアドオンの添付ファイルを作成できるかどうかを確認する

対象となるユーザーに代わってアドオンの添付ファイルを作成できます。対象となるユーザーとは、コースワークの課題を作成しようとしているコースの教師であり、Teaching & Learning または Education Plus の Google Workspace for Education エディションのライセンスが割り当てられているユーザーです。

まず、ユーザーがアドオンの添付ファイルを作成できるかどうかを判断します。これを行うには、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('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 課題の教師ビュー。

対象ユーザー

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

  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 は、各 View の適切な iframe で開きます。