Classroom アプリは、CourseWork
、CourseWorkMaterials
、Announcements
の 3 種類のストリーム アイテムをサポートしています。このガイドでは CourseWork
の管理方法について説明しますが、すべてのストリーム アイテムの API は同様です。ストリーム アイテムのタイプとその違いについては、API リソースをご覧ください。
CourseWork
リソースは、特定のコースの生徒に割り当てられた課題を表します。これには、期限や最大スコアなどの追加資料や詳細が含まれます。CourseWork
には、課題、テスト付きの課題、記述式の質問、多肢選択式の質問 の 4 つのサブタイプがあります。Classroom API は、課題、記述式の質問、選択式の質問の 3 つのサブタイプをサポートしています。これらのタイプは CourseWork.workType
フィールドで表されます。
CourseWork
リソースに加えて、StudentSubmission
リソースを使用して完了した作業を管理できます。
課題を作成する
CourseWork
は、コースの教師に代わってのみ作成できます。生徒またはコースの教師ではないドメイン管理者の代わりに CourseWork
を作成しようとすると、PERMISSION_DENIED
エラーが発生します。Classroom のさまざまな役割について詳しくは、ユーザータイプをご覧ください。
courses.courseWork.create
メソッドを使用して CourseWork
を作成するときに、次のサンプルコードに示すように、リンクを materials
として添付できます。
Java
Python
title
フィールドと workType
フィールドは必須です。それ以外のフィールドはすべて省略可能です。state
が指定されていない場合、CourseWork
は下書き状態で作成されます。
指定したターゲット url
を含むリンク リソースを使用して、リンクされたマテリアルを CourseWork
に含めます。Classroom は title
とサムネイル画像 URL(thumbnailUrl
)を自動的に取得します。Classroom API は Google ドライブと YouTube の教材もネイティブでサポートしており、同様の方法で DriveFile リソースまたは YouTubeVideo リソースに含めることができます。
期日を指定するには、dueDate
フィールドと dueTime
フィールドを対応する UTC 時間に設定します。期限には将来の日付を指定する必要があります。
CourseWork
レスポンスには、他の API リクエストで割り当てを参照するために使用できるサーバー割り当ての識別子が含まれています。
課題を取得する
対応するコースの生徒と教師に代わって CourseWork
を取得できます。コースの教師ではないドメイン管理者から依頼された場合でも、その管理者に代わって CourseWork
を取得できます。特定の CourseWork
を取得するには、courses.courseWork.get
を使用します。すべての CourseWork
を取得するには(必要に応じて一部の条件に一致させる)、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
CourseWork
を取得する権限があっても、マテリアルやマテリアル メタデータにアクセスする権限があるとは限りません。実際には、管理者がコースのメンバーでない場合、添付されたドライブ ファイルのタイトルが表示されないことがあります。
生徒の回答を管理する
StudentSubmission
リソースは、生徒が CourseWork
に対して行った作業を表します。このリソースには、作業のステータスやグレードなど、作業に関連するメタデータが含まれます。新しい CourseWork
が作成されると、各生徒に対して StudentSubmission
が暗黙的に作成されます。
以降のセクションでは、生徒の回答を管理する一般的な操作について説明します。
生徒の回答を取得する
生徒は自分の提出物を取得でき、教師はコース内のすべての生徒の提出物を取得でき、ドメイン管理者はドメイン内のすべての生徒のすべての提出物を取得できます。各 StudentSubmission
には識別子が割り当てられます。識別子がわかっている場合は、courses.courseWork.studentSubmissions.get
を使用して送信を取得します。
次の例に示すように、courses.courseWork.studentSubmissions.list
メソッドを使用して、特定の条件に一致するすべての StudentSubmission
リソースを取得します。
Java
Python
次のサンプルに示すように、userId
パラメータを指定して、特定の生徒に属する StudentSubmission
リソースを取得します。
Java
Python
生徒は、Student
リソースで表される一意の 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
StudentSubmission
を取得する権限があるからといって、添付ファイルや添付ファイルのメタデータにアクセスする権限があるとは限りません。つまり、管理者がコースのメンバーでない場合、添付されたドライブ ファイルのタイトルが表示されないことがあります。
生徒の回答に添付ファイルを追加する
Link
、DriveFile
、または YouTubeVideo
リソースを添付することで、リンクを生徒の提出物に添付できます。これは、次の例に示すように、courses.courseWork.studentSubmissions.modifyAttachments
を使用して行われます。
Java
Python
Link
アタッチメントはターゲット url
によって定義されます。Classroom は title
とサムネイル画像(thumbnailUrl
)を自動的に取得します。StudentSubmissions
に添付できる教材については、Material
をご覧ください。
StudentSubmission
は、コースの教師または所有する生徒のみが変更できます。Materials
をアタッチできるのは、StudentSubmission
の CourseWorkType
が ASSIGNMENT
の場合のみです。
必要なスコープは、リクエストしているユーザーがコースで持つロールによって異なります。ユーザーが教師の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students
ユーザーが学生の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me