GASでGoogle Classroomのクラスへの招待を作成する際のよくあるエラー
GoogleAppsScriptを用いてスプレッドシート上の名簿の生徒をGoogle Classroomのクラスに招待する際に起こりがちなエラーとその対処法について紹介します。
概要
Google Classroomのクラスへ副担任・生徒を招待するGASを作成する際や、その動作確認の際に起こりがちなエラーとその対処法を紹介します。
これまで作成してきた内容は下記の3つの記事になります。
- GASでスプレッドシート上の生徒をGoogle Classroomのクラスに招待する
- GASでスプレッドシート上の生徒をGoogle Classroomのクラスに招待する(応用編) スプレッドシート上で実行できるように改良
- GASでスプレッドシート上の生徒をGoogle Classroomのクラスに招待する(応用編Part2) エラー処理を追加
以下の起こりがちなエラーについて、紹介していきます。
- 招待作成ができない
(1)招待が既に存在している
(2)招待相手のドメインが違う - 関数の実行ができない
(1)対象の関数が存在していない
(2)引数が必要な関数を直接実行している
1. 招待作成ができない
クラスへの招待の作成Classroom.Invitations.create(invitationData)
を実行した際にエラーが発生しやすいため、ケース別に解説・紹介していきます。
(1)招待が既に存在している
エラー内容:GoogleJsonResponseException: API call to classroom.invitations.create failed with error: Requested entity already exists
このエラーは、招待を作成しようとしたが、既にその相手に対して対象のクラスの招待が作成されている際に起きます。
その理由は、Google Classroomの仕様として同じ相手に同じクラスの招待を重複して作成できないためです。
応用編Part2で恒久的な対処法は紹介していますが、動作確認で繰り返し実行していても起きてしまうかと思います。
動作確認の際には、少し手間ですが招待を作ったら招待を送られたアカウントでその招待を「承諾」し、招待を作った側でそのメンバーをクラスから削除することで、再度同じ相手に招待を作ることができるようになります。
- 担任or副担任アカウントで招待作成を実行
- 招待されたアカウントでその招待を「承諾」
- 担任or副担任アカウントでクラスから上記アカウントを削除
- 再度同じクラスから同じアカウントへ招待作成が可能になる
(2)招待相手のドメインが違う
エラー内容:GoogleJsonResponseException: API call to classroom.invitations.create failed with error: @UserInIllegalDomain Invitation cannot be created for user in this domain
このエラーは招待相手のドメインがGASの実行アカウント(クラス作成アカウント)のドメインと一致しない場合に起きます。
対処法として、そのドメインがClassroomへ参加できるように管理アカウントで設定する必要があります。
詳細の設定方法などについては公式ヘルプをご確認ください。
2. 関数の実行ができない
今回のGAS紹介では複数の関数を作り連動させているので、その部分でエラーが発生する場合が考えられます。
関数の呼び出し部分でエラーが発生した場合の原因や対処法の例について紹介します。
(1) 対象の関数が存在していない
エラー内容:関数名 is not defined
このエラーは指定の関数が存在しないときに起きます。
関数自体がない場合はもちろん、関数名の指定が誤っていた場合(大文字小文字の誤りやスペルミス)でも起こります。
呼び出したい関数の名前を再確認してみましょう。
(2) 引数が必要な関数を直接実行している
エラー内容:Request contains an invalid argument
引数を必要とする関数(今回の例ではgetExistMembers(courseId)
やgetInvitedMember(courseId)
など)は、GASエディターの「実行」や「デバッグ」を使って単体で動かした場合、
その引数を使用する部分で値なしとなってしまうため、エラーが発生します。
今回の例だと、Classroom.Invitations.list(invitationArgs)
を実行しようとしたが、courseId
などのデータを引数から取得できていないためエラーとなっています。
動作確認をする際には、別の関数内で引数を与えて呼び出す必要があります。