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

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

ワークフロー

アタッチメントの作成手順は次のとおりです。

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

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

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

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

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

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. アドオンの添付ファイルを作成します。

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 で開きます。