Classroom UI は、課題、テスト付きの課題、記述式の質問、多肢選択式の質問、資料の5 種類の授業アイテムをサポートしています。現在、Classroom API では、これらのタイプの3 つ(API では CourseWorkType
と呼ばれます)がサポートされています。アサインメント、記述式の質問、多肢選択式の質問です。
この機能にアクセスするには、CourseWork リソースを使用します。これは、特定のコースの生徒に割り当てられた課題または質問を表します。追加の教材や、期限や最大スコアなどの詳細も含まれます。
CourseWork リソースに加えて、完了した課題は StudentSubmission
リソースで管理できます。以降のセクションでは、これらの点について詳しく説明します。
課題を作成する
課題はコースの教師に代わってのみ作成できます。生徒に代わってコースで課題を作成しようとすると、403 PERMISSION_DENIED
エラーが発生します。同様に、ドメイン管理者も、教えないコースの課題を作成できません。API を使用して作成しようとすると、403 PERMISSION_DENIED
エラーが発生します。
courses.courseWork.create
メソッドを使用して課題を作成する場合は、次のサンプルコードに示すように、リンクを materials
として添付できます。
Java
Python
結果には、他の API リクエストで割り当てを参照するために使用できる、サーバーによって割り当てられた識別子が含まれます。
Classroom API で作成した課題にリンクされた教材を含めるには、リンク リソースを使用して、ターゲット URL を指定します。Classroom は、タイトルとサムネイル画像を自動的に取得します。Classroom API は、Google ドライブと YouTube の教材もネイティブにサポートしています。これらの教材は、DriveFile リソースまたは YouTubeVideo リソースに同様の方法で含めることができます。
期限を指定するには、dueDate
フィールドと dueTime
フィールドを対応する UTC 時間に設定します。期限には将来の日付を指定してください。
課題と質問を取得する
課題と質問は、対応するコースの生徒と教師、またはドメイン管理者が取得できます。特定の課題や質問を取得するには、courses.courseWork.get を使用します。すべての課題または質問(一部の条件に一致するもの)を取得するには、courses.courseWork.list を使用します。
必要なスコープは、リクエスト元のユーザーがコースで持っているロールによって異なります。ユーザーが生徒の場合は、次のいずれかのスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
ユーザーが教師またはドメイン管理者の場合は、次のいずれかのスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
課題や質問を取得する権限があっても、資料や資料のメタデータにアクセスする権限が付与されているわけではありません。つまり、管理者がコースのメンバーでない場合、添付されたドライブ ファイルのタイトルが表示されないことがあります。管理者がユーザー ファイルにアクセスできるようにするには、ドメイン全体の委任ガイドをご覧ください。
生徒の回答を管理する
StudentSubmission
リソースは、課題または質問に対する生徒の提出物と成績を表します。新しい質問または課題が作成されると、生徒ごとに StudentSubmission
リソースが暗黙的に作成されます。
以降のセクションでは、生徒の回答を管理する一般的な操作について説明します。
生徒の回答を取得する
生徒は自分の提出物を取得できます。教師はコース内のすべての生徒の提出物を取得できます。ドメイン管理者は、ドメイン内のすべての生徒のすべての提出物を取得できます。各生徒の提出物には識別子が割り当てられます。識別子がわかっている場合は、courses.courseWork.studentSubmissions.get
を使用して取得します。
次のサンプルに示すように、courses.courseWork.studentSubmissions.list
メソッドを使用して、特定の条件に一致する StudentSubmission
リソースを取得します。
Java
Python
次のサンプルに示すように、userId
パラメータを指定して、特定の生徒に属する StudentSubmission
リソースを取得します。
Java
Python
生徒は、Google Admin SDK から返されたユーザーの一意の ID またはメールアドレスで識別されます。現在のユーザーは、"me"
の省略形を使用して自分の ID を参照することもできます。
コース内のすべての課題の生徒の提出物を確認することもできます。これを行うには、次のサンプルに示すように、courseWorkId
としてリテラル "-"
を使用します。
Java
service.courses().courseWork().studentSubmissions()
.list(courseId, "-")
.set("userId", userId)
.execute();
Python
service.courses().courseWork().studentSubmissions().list(
courseId=<course ID or alias>,
courseWorkId='-',
userId=<user ID>).execute()
必要なスコープは、リクエスト元のユーザーがコースで持っているロールによって異なります。ユーザーが教師またはドメイン管理者の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students.readonly
https://www.googleapis.com/auth/classroom.coursework.students
ユーザーが生徒の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me.readonly
https://www.googleapis.com/auth/classroom.coursework.me
生徒の提出物を取得する権限があっても、添付ファイルや添付ファイルのメタデータにアクセスする権限が付与されているわけではありません。つまり、管理者がコースのメンバーでない場合、添付されたドライブ ファイルのタイトルが表示されないことがあります。管理者がユーザー ファイルにアクセスできるようにするには、ドメイン全体の委任ガイドをご覧ください。
生徒の回答に添付ファイルを追加する
生徒の提出物にリンクを添付するには、Link
、DriveFile
、または YouTubeVideo
リソースを添付します。これは、次のサンプルに示すように courses.courseWork.studentSubmissions.modifyAttachments
で行います。
Java
Python
リンク アタッチメントは、リンク先の URL によって定義されます。Classroom では、タイトルとサムネイル画像が自動的に取得されます。その他の資料については、それぞれのリファレンス ページをご覧ください。
StudentSubmission
を変更できるのは、コースの教師またはそのオーナーである生徒のみです。Materials
を添付できるのは、生徒の提出物の CourseWorkType
が ASSIGNMENT
の場合のみです。
必要なスコープは、リクエスト元のユーザーがコースで持っているロールによって異なります。ユーザーが教師の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students
ユーザーが生徒の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me