こんにちは!GoogleAppsScriptを使った業務効率化に夢中の初心者プログラマー、太郎です。
今日はGoogleAppsScript(GAS)を用いてGoogle Classroomでコースを作成する方法について書いていきたいと思います。
初心者向けですが、javascriptの基本的なルールは押さえておいた方が理解はしやすいと思いますので、まだの方はProgateでサクッとjavascriptの文法を学習してみてください。
また、初心者が手当たり次第にコードを書いてみて詰まったところやその時の心の声などもつらつらと書いています。やり方のみさっと知りたい方は、最後のまとめを参照ください。
また、ReferenceError: Classroom is not defined
とエラーが出てしまった方は、こちらの記事を参考にしてみてください。
では、早速トライしていきましょう!
createメソッドをとりあえず使ってみようとするが全く上手くいかない
公式ドキュメントより、とりあえずcreateメソッドがあるので見よう見まねで使ってみる。
function createCourse() {
Classroom.Courses.create();
}
Classroom.Courses.create
ではなく、Classroom.create
ではだめな理由はよく分かりません(たしかに公式ドキュメントにはそう書いてあるのですが、なぜなのかは理解していない)。
当たり前ですが、エラーが出ました。
Exception: Invalid number of arguments provided. Expected 1-2 only createCourse @ コード.gs:2
どうも、無効な番号(=Invalid number)が指定されているらしい。これだけ読んでもよく分からない。ただ、どう見てもパラメーターが足りなさそうなので、createの引数に何かを指定しないといけないんだろうな~と推測。
Classroomの公式ドキュメントをみると、コースに指定できる引数がこんないっぱいあるんですよ。。。
{
"id": string,
"name": string,
"section": string,
"descriptionHeading": string,
"description": string,
"room": string,
"ownerId": string,
"creationTime": string,
"updateTime": string,
"enrollmentCode": string,
"courseState": enum (CourseState),
"alternateLink": string,
"teacherGroupEmail": string,
"courseGroupEmail": string,
"teacherFolder": {
object (DriveFolder)
},
"courseMaterialSets": [
{
object (CourseMaterialSet)
}
],
"guardiansEnabled": boolean,
"calendarId": string
}
この情報、全部入れないといけないの???
そういえばさっきのエラーメッセージに
Expected 1-2 only
と書いてあったので、1、2個入れれば良いのかもしれません。
引数をいくつか指定+newCourseメソッドをとりあえず使ってみる
クラスの名前(name)とownerID(ownerId)だけを指定しているこちらの記事を参考にして書いてみます。
function createCourse() {
//ひとまず新しいコースを作成
var course = Classroom.newCourse();
//以下、コースの情報を追記
course.name = 'GASテスト用クラス';
course.ownerId = '××××@gmail.com';//ご自身のGmailアドレスを入力してください。
// 上記で作成したコースをクラスルームに作成
Classroom.Courses.create(course);
}
実行してみると、、、なんと新しいクラスが作成されていました!!!
ここまでたどり着くのに昨晩から今朝にかけて3時間以上調べていたので感動です!!!(冒頭でものべていますが私はプログラミング初心者です。。。)
さて、ちなみにコースの名前だけでも作成できるのか試してみましょう。
function createCourse() {
//ひとまず新しいコースを作成
var course = Classroom.newCourse();
//以下、コースの情報を追記
course.name = 'コースの名前だけで作成';
// 上記で作成したコースをクラスルームに作成
Classroom.Courses.create(course);
}
はい、エラー出ましたね。
エラー内容は以下
GoogleJsonResponseException: API call to classroom.courses.create failed with error: course.ownerId: You must specify an ownerId
ownerIdは必須らしいです。
ではownerIdだけで作成できるのかも試してみましょう。
function createCourse() {
//ひとまず新しいコースを作成
var course = Classroom.newCourse();
//以下、コースの情報を追記
course.ownerId = '××××@gmail.com';//ご自身のGmailアドレスを入力
// 上記で作成したコースをクラスルームに作成
Classroom.Courses.create(course);
}
これもエラー出ました。
GoogleJsonResponseException: API call to classroom.courses.create failed with error: course.name: Course name must be specified.
コースの名前も必須みたい、つまりは、nameとownerIdを指定すればコースは作成できるようです(公式ドキュメント見てもそういう記述が見当たらない気がするのはなぜ、、、)
まとめ-GoogleClassroomにコースを作成する方法
GoogleClassroomに新しくコースを作成するには、
①Classroom.newCourseでコースを作成
②nameとownerIdの情報を追加
③Classroom.Courses.createを実行
上記のやり方でできます。コードは以下
function createCourse() {
//新しいコースを作成
var course = Classroom.newCourse();
//nameとownerIdを指定
course.name = 'コース名';
course.ownerId = '××××@gmail.com';//オーナーにする人のGmailアドレスを入力
// 上記で作成したコースをクラスルームに作成
Classroom.Courses.create(course);
}
以上、参考になれば嬉しいです。Google Classroom APIは日本語の情報が少ないため、今後も様々トライしてみた結果を記事に書いていきたいと思います!