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

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

ワークフロー

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

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

各操作については、次のセクションで説明します。

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

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

まず、ユーザーが特定の Course でアドオンを作成できるかどうかを判断します。コース ID を含めて courses.checkAddOnCreationEligibility エンドポイントにリクエストを発行します。

Python

eligibility_response = (
  classroom_service.courses()
  .checkAddOnCreationEligibility(courseId=course_id)
  .execute()
)
is_create_attachment_eligible = (
  eligibility_response.get('isCreateAttachmentEligible')
)
print(f'User eligibility for course {eligibility_response.get("courseId")}'
      f': {is_create_attachment_eligible}.')

ユーザーが対象である場合、レスポンスには true に設定されたブール値 isCreateAttachmentEligible が含まれます。ユーザーが対象でない場合、レスポンスは isCreateAttachmentEligible ブール値を返しません。

利用資格に基づいてお客様をラウトする

利用資格によって、ユーザーのアドオンの添付ファイルを作成できるかどうかが決まります。

対象外のユーザー

ユーザーがアドオンの添付ファイルを作成できない場合は、ユーザーが選択したコンテンツ 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. アドオンの添付ファイルを作成します。
    • AddOnAttachmentpostId を、新しく作成した割り当ての id に設定します。
    • サポートする各ビューについて、ユーザーが選択したコンテンツの 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 で開きます。