見出し画像

#13 参加しているクラスの情報を取得する

GAS で利用できる Google Classroom の API を見ていると、取得できるクラスの情報の中に teacherGroupEmail と courseGroupEmail という値が設定内容が取得できます。

これらの設定値は、

teacherGroupEmail
string
The email address of a Google group containing all teachers of the course. This group does not accept email and can only be used for permissions.
Read-only.

courseGroupEmail
string
The email address of a Google group containing all members of the course. This group does not accept email and can only be used for permissions.
Read-only.

https://developers.google.com/classroom/reference/rest

というもので、前者がクラスに所属する教師の Google グループのアドレス、後者がクラスに参加するすべてのメンバーが所属する Google グループのアドレス、ということみたいです。

この投稿では、これらのアドレスについて取り上げます。

はじめに... 結論?

何だか難しく感じる書き出しになっていますが、結論としてはこの投稿で紹介するスプレッドシート+スクリプトで、teacherGroupEmail と courseGroupEmail を確認し、このアドレスを利用するとクラスのメンバーや教師で共有が行えますよ、というものです。

この結論だけを望む方は、↑ の目次からすぐにスプレッドシートのコピーに進んでください。

気付いていないかもしれませんが、Google Classroom が作成した教師のマイドライブ内に作成された Classroom フォルダには teacherGroupEmail、ストリーム内にアップロードされたファイルには courseGroupEmail で共有設定が行われています。実は、気付かないところで利用されているものなんです。

Google グループのアドレス?

前述のリファレンスの説明では、teacherGroupEmail と courseGroupEmail は Google グループのメールアドレスであると説明されているものの、Google グループに関する API を利用しても、list では結果に表示されず、get では

{
  "error": {
    "code": 403,
    "message": "Not Authorized to access this resource/api",
    "errors": [
      {
        "message": "Not Authorized to access this resource/api",
        "domain": "global",
        "reason": "forbidden"
      }
    ]
  }
}

という感じでエラーになってしまいます。

恐らく、get で得られる Group の情報の中にある adminCreated が true に設定されているものは、当該ドメインの全体管理者であってもアクセスできない設定になっているのだと思います。きっとここでの admin というのは Google 側の管理者であり、すなわちシステム側で作成したものということなのだと思います。

以下のヘルプ記事で案内されている「Classroom の教師」グループであっても、 adminCreated は false に設定されていて、このグループは Google グループでも一覧に表示されています。

こういった状況から、Google Classroom で作成されている teacherGroupEmail と courseGroupEmail は、特別な Google グループのものであると考えられます。

何に使えるの?

そんな teacherGroupEmail と courseGroupEmail に設定されている Google グループのアドレスを何に利用するか?というと、共有設定が行えます。ファイルやフォルダに対する共有設定だけでなく、共有ドライブのメンバーを設定する際に利用すれば、クラスのメンバーで利用できる共有ドライブが作成できます。

作成したスプレッドシート+スクリプト

今回作成したスプレッドシート+スクリプトは、以下のような感じになっています。

作成したスプレッドシート

https://docs.google.com/spreadsheets/d/12drsoTnmmNR2Nr1zWoQ45hc2z6zgDmzS2JddWVQLKS4/copy

  1. 上記のアドレスにアクセスして、自身の Google ドライブにスプレッドシートをコピーします。

  2. 「自アカウントの取得」ボタンを押すと、A2 に自アカウントのメールアドレスが取得できます。手入力しても構いません。

  3. 「参加クラスの取得」ボタンを押すと、ページ下部に A2 のアカウントが参加しているアクティブ(アーカイブされているものは含まない)なクラスの情報が一覧表示されます。

  4. 「eMail のクリア」ボタン、「作業域のクリア」ボタンは、それぞれ該当する部分をクリアします。

  5. 「自アカウントの取得」ボタンを使用せずに、A2 に取得対象となるアカウントのメールアドレスを手入力しても構いません。その場合には、スクリプトを実行するアカウントの権限によって参照できないクラスや情報があります。

  6. 初回の実行時には、実行するアカウントによる確認作業が必要になりますので、詳しくは以下の記事をご覧ください。

最後に

最後に、お決まりのフレーズなどを書いておきます。

  • 一応の動作確認は行っているものの、不慮のトラブルによって損害等が生じても、責任はとれませんので予めご了承ください。

  • コメントを含めても 100~200行程度のスクリプトであり、実行に際して目的外の場所への書き出しや収集などは行っていません。

  • 特別なエラー処理は行っていないので、意図しないケースでエラーが発生してしまうかもしれません。どうにもならない場合には、ご連絡ください。

誤ったファイル共有によって情報が流出しないように、上記のようなメンバー情報を利用して、適切な共有設定を行うようにしましょう。


この記事が気に入ったらサポートをしてみませんか?