添付ファイルを操作する

このページでは、添付ファイルの作成と生徒の提出物の操作の実装の詳細について説明します。これらのリクエストを行う際に、アタッチメント関連のパラメータを指定する必要がある場合があります。

アタッチメントの作成

適切な courses.*.addOnAttachments.create エンドポイントに CREATE リクエストを発行して、アタッチメントを作成します。リクエストの本文に AddOnAttachment のインスタンスを含める必要があります。

添付ファイルを作成する際は、次のフィールドが必要です。

  • title: アタッチメントの文字列名。
  • teacherViewUri: アタッチメントの教師ビューの URI。
  • studentViewUri: アタッチメントの [生徒ビュー] の URI。
  • studentWorkReviewUri: 教師がアタッチメントで生徒の課題を確認するための URI。このフィールドは、アクティビティ タイプの添付ファイルにのみ必要です。

次のオプション フィールドの一部を含めることもできます。

  • dueDatedueTime(添付ファイルの期限を指定する場合は必須)。
  • maxPoints: アタッチメントの最大評価。成績のパスバックをサポートする場合は、ゼロ以外の値にする必要があります。アクティビティ タイプのアタッチメントにのみ適用されます。

これらのフィールドの詳細については、AddOnAttachment リソース リファレンスをご覧ください。

生徒の提出物の詳細

一般的な送信ワークフローは次のとおりです。

  1. 生徒が studentViewUri を起動してアクティビティを完了します。
  2. アドオンは、生徒の認証情報を使用して getAddOnContext メソッドから submissionId を取得します。
  3. submissionIdattachmentId は、生徒の課題の一意の識別子としてアドオン デベロッパーによって保存されます。教師が Classroom で課題をコピーした場合は、これらの 2 つのパラメータの複合キーを使用して、コピーされた課題に新しい添付ファイルを表示できます。詳しくは、コピーされたコンテンツに関するページをご覧ください。
  4. 生徒の提出物を確認することに関心がある教師は、studentWorkReviewUri を起動します。リクエストには、courseIditemIditemTypeattachmentIdsubmissionId のクエリ パラメータが含まれます。
  5. アドオン デベロッパーは、これらの 4 つの ID を使用して生徒の課題を取得します。courses.courseWork.addOnAttachments.studentSubmissions エンドポイントを使用して、生徒の提出物に関する情報を取得または変更します。

送信ステータスを検出する

特定の submissionId の詳細を取得するには、courses.courseWork.addOnAttachments.studentSubmissions エンドポイントに GET リクエストを送信します。AddOnAttachmentStudentSubmission オブジェクトが返されます。このオブジェクトには、提出物の評価(pointsEarned)と現在のステータス(postSubmissionState)が含まれます。提出ステータスは次のいずれかの値になります。

  • NEW: 生徒が提出物にアクセスしたことがない。
  • CREATED: 生徒が提出物を作成したが、まだ送信していない場合。
  • TURNED_IN: 生徒が教師に課題を提出している場合。
  • RETURNED: 教師が生徒に提出物を返却した場合。
  • RECLAIMED_BY_STUDENT: 生徒が課題を「送信しなかった」場合。

このエンドポイントを使用すると、アドオンで生徒の課題のステータスを検出できます。返された状態に応じて、生徒に表示されるビューやオプションを調整できます。次のような機能が該当します。

  • アドオン内の課題の提出ステータスを表示する。これにより、生徒が混乱を避け、課題を誤って提出しないようにすることができます。
  • 送信の編集権限を制限する。課題のステータスが CREATED または RECLAIMED_BY_STUDENT の場合、生徒は提出物を編集できる場合があります。課題のステータスが TURNED_IN または RETURNED の場合、生徒は提出物を編集できないことがあります。

成績と複数の添付ファイル

1 つの課題の成績を設定するために使用できるアドオンの添付ファイルは 1 つのみです。教師が maxPoints 値を指定するアクティビティ タイプのアタッチメントを複数作成した場合、最初のアタッチメントのみが課題の成績を設定できます。添付ファイルの成績パスバックを無効にするには、maxPoints 値を未設定のままにするか、ゼロに設定します。

提出物の成績を設定する

生徒の提出物を変更するには、PATCH リクエストを courses.courseWork.addOnAttachments.studentSubmissions エンドポイントに送信します。リクエスト本文には、変更された値を含む AddOnAttachmentStudentSubmission のインスタンスを含める必要があります。pointsEarned フィールドを設定して、提出物の成績を変更します。pointsEarned で渡された値は、Classroom UI で教師に表示される下書きの成績になります。教師は、課題を生徒に返却する前に、仮の成績を変更できます。成績が教師にどのように表示されるかを詳しくは、Classroom UI での採点の概要をご覧ください。

pointsEarned を使用してグレードを設定できるのは、次の条件が満たされている場合のみです。

  • アタッチメントの maxPoints 値は正の値にする必要があります。
  • アドオンが添付ファイルの元の作成者である必要があります。

また、作成済みの AddOnAttachmentmaxPoints 値は、addOnAttachments エンドポイントに PATCH リクエストを送信することで変更できます。

評価を設定するタイミング

成績を Google Classroom に返すタイミングは、ある程度選択できます。重要な違いは、教師のみが成績を変更できるため、教師の認証情報を保存するかどうかです。

成績を Google Classroom に渡すタイミングは、生徒が課題を完了したときと、教師が生徒の課題の iframe で生徒の課題を開いたときの2 つです。

生徒が課題を完了したときに成績を設定するには、教師のオフライン認証情報を保存し、それを取得して、生徒が課題を完了したときに成績を変更する必要があります。この方法には次のようなメリットがあります。

  • 成績をシームレスに更新できます。教師は、Classroom UI に成績を入力するために特別な操作を行う必要はありません。
  • 課題の進捗状況に関するリアルタイムの分析情報をクラスに提供します。生徒が添付ファイルを提出するときに成績を設定すると、教師はすべての提出物を開かなくても生徒の理解度を把握できます。

このアプローチでは、成績の同期に非同期アプローチも使用できます。AddOnAttachmentStudentSubmission エンドポイントを定期的にポーリングして、生徒が課題を提出したタイミングを検出できます。送信されたら、保存されている認証情報を使用して送信の成績を設定します。

生徒のセッション中に教師の認証情報を読み込みたくない場合は、生徒の提出物の確認用 iframe で生徒の提出物を読み込むときに、アクティブな教師の認証情報を使用できます。ただし、Classroom UI の成績はリアルタイムで更新されず、教師はすべての提出物の生徒の課題レビューの iframe を開く必要があるため、ユーザー エクスペリエンスがスムーズにならない可能性があります。

課題の成績の変化を検出する

教師は、課題の作成後に Classroom で成績の設定を編集できます。このような編集には、次のものがあります。

  • 割り当てられたポイント値の変更。
  • 割り当ての maxPoints 値を変更する。
  • 課題の採点を行うかどうかを変更する。

課題の現在の採点設定を確認するには、courses.courseWork エンドポイントに GET リクエストを送信することをおすすめします。レスポンスには、現在の maxPoints 値が含まれます。採点されていない課題には、null またはゼロの maxPoints 値が設定されます。

採点を Classroom に渡した場合は、courses.courseWork.addOnAttachments.studentSubmissions エンドポイントを使用して、アドオンの添付ファイルの採点を取得または変更します。評価値は pointsEarned フィールドを使用して設定します。教師が特定のアクティビティの生徒のスコアを編集できる場合は、この値を確認して、必要に応じて更新することを検討してください。