Classroom アプリでは、3 種類のストリーム アイテムがサポートされています:
CourseWork、CourseWorkMaterials、Announcements。このガイドでは、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.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
ユーザーが教師またはドメイン管理者の場合は、次のいずれかのスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students.readonlyhttps://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.readonlyhttps://www.googleapis.com/auth/classroom.coursework.students
ユーザーが生徒の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me.readonlyhttps://www.googleapis.com/auth/classroom.coursework.me
StudentSubmission
を取得する権限があっても、添付ファイルや添付ファイルのメタデータにアクセスする権限があるとは限りません。実際には、管理者がコースのメンバーでない場合、添付されたドライブ
ファイルのタイトルが表示されないことがあります。
生徒の回答に添付ファイルを追加する
Link、
DriveFile、またはYouTubeVideoリソースを添付して、生徒の提出物にリンクを添付できます。これは、
courses.courseWork.studentSubmissions.modifyAttachmentsで行います。
次のサンプルに示すように、
Java
Python
Link 添付ファイルは、ターゲット url で定義されます。Classroom
は、title とサムネイル画像(thumbnailUrl)を自動的に取得します。
Material に添付できる資料については、
StudentSubmissions をご覧ください。
StudentSubmission
は、コースの教師または所有する生徒のみが変更できます。StudentSubmission の
CourseWorkType が ASSIGNMENT の場合にのみ、Materials を添付できます。
必要なスコープは、リクエストを行うユーザーがコースで持つロールによって異なります。ユーザーが教師の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.students
ユーザーが生徒の場合は、次のスコープを使用します。
https://www.googleapis.com/auth/classroom.coursework.me