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 で作成した課題にリンク付きの資料を含めるには、Link resource を使用してターゲット URL を指定します。タイトルとサムネイル画像が自動的に取得されます。 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