こんにちは!GoogleAppsScriptを使った業務効率化に夢中の初心者プログラマー、太郎です。
今日はGoogleAppsScript(GAS)を用いてClassroomに生徒を招待する方法について書いていきたいと思います。
初心者向けですが、javascriptの基本的なルールは押さえておいた方が理解はしやすいと思いますので、まだの方はProgateでサクッとjavascriptの文法を学習してみてください。
また、初心者が手当たり次第にコードを書いてみて詰まったところやその時の心の声などもつらつらと書いています。やり方のみさっと知りたい方は、最後のまとめを参照ください。
また、ReferenceError: Classroom is not defined
とエラーが出てしまった方は、こちらの記事を参考にしてみてください。
では、早速トライしていきましょう!
assigneeModeが使えそう
ClassroomでDriveの課題を配布する方法(CourseWork.create)の記事で書いたやり方を少しだけ帰れば行けそうな気がします。公式ドキュメントを確認すると、課題を作成するときに、すべての生徒に配布するか、個々の生徒に配布するか選べるキー、assigneeMode
というものがあるみたい。この値として、ALL_STUDENTS
を選べば、すべての生徒に配布できます。ちなみにこのモードがデフォルトみたいです。INDIVIDUAL_STUDENTS
を選べば指定したの生徒一覧に課題を配布できそうです。
ただ、生徒の指定の仕方がここには書いていないですが、すぐ次にありますね!
individualStudentsOptions
というキーです。
先のassigneeMode="INDIVIDUAL_STUDENTS"
のときのみ、指定した生徒一覧のみに課題を配布できるようです。
individualStudentsOptions
の中には、生徒IDを配列で渡せます。
こういうことですね。
individualStudentsOptions:{
"studentIds": [studentid1, studentid2, studentid3, ・・・]
}
それでは、GAS太郎とGAS次郎とGAS三郎の3名が参加しているこのクラスで、太郎と次郎にだけ課題を配布してみたいと思います(ネーミングセンスのなさには突っ込まないでください)。
とは言っても、以下の記事の課題を作成するときに渡すパラメータにassigneeMode
とindividualStudentsOptions
を加えてあげればいいだけのはず。
ClassroomでDriveの課題を配布する方法(CourseWork.create)
function createCourseWork() {
var targetCourseId = '××××'//課題を配布するコースを選択
var createAssignment = {
title: '特定の生徒に課題を配布する',
state: 'PUBLISHED',
workType: 'ASSIGNMENT',
materials: [{
"driveFile": {
"driveFile": {"id": "××××"}//課題として配布するファイルのIDを取得
}
}],
assigneeMode: "INDIVIDUAL_STUDENTS",
individualStudentsOptions: {
"studentIds": ['××××@××××', '××××@××××']//GAS太郎とGAS次郎のgmailメールアドレスを入力
}
};
Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}
ではこれで実行してみましょう!
出来ました!!!太郎と次郎にのみ課題が配布されています!!!
いや~~~、新しいコースを作成したり削除するときにものすごく詰まったりしましたが、だんだんとClassroomのAPIに慣れてきたかもしれません!
最後、まとめます!
まとめ-Classroomで指定した生徒に課題を配布する方法
クラスルームで指定した生徒にのみ課題を配布したい場合は、CourseWork.createメソッドを実行するときにassigneeMode
をINDIVIDUAL_STUDENTS
にしてindividualStudentsOptions
で配布したい生徒のメールアドレスを指定してあげればOKです!
function createCourseWork() {
var targetCourseId = '××××'//課題を配布するコースを選択
var createAssignment = {
title: '○○○○',//課題のタイトルを入力
state: 'PUBLISHED',
workType: 'ASSIGNMENT',
materials: [{
"driveFile": {
"driveFile": {"id": "××××"}//課題として配布するファイルのIDを入力
}
}],
assigneeMode: "INDIVIDUAL_STUDENTS",
individualStudentsOptions: {
"studentIds": ['××××@××××', '××××@××××', '××××@××××', ・・・]//課題を配布したい生徒のアドレスを入力
}
};
Classroom.Courses.CourseWork.create(createAssignment, targetCourseId);
}
以上、参考になれば嬉しいです。Google Classroom APIは日本語の情報が少ないため、今後も様々トライしてみた結果を記事に書いていきたいと思います!