見出し画像

#61 Reports API を使ってみる(管理者向け)

Google Workspace for Education の管理コンソールで、「レポート」→「アプリレポート」→「アカウント」で下図のように、利用状況を確認できます。

管理コンソールで「レポート」→「アプリレポート」→「アカウント」

しかしながら、管理コンソールで確認できるのは過去 6か月分のデータがグラフ化され、Google スプレッドシートなどでの書き出しも行えますが、このような状況確認を簡単に行えるようにできないか?と考えて、API まわりを調べてみました。

  • 今回のプログラムは、全体管理者など相応の権限を有したアカウントでなければ実行できないプログラムな点にご注意ください。

Reports API とは?

Google が提供してくれる API としては、管理者向けの Admin SDK の中に Reports API が用意されています。

この API については、上記のリファレンスの他に、以下 URL を参考に挿させていただきました。

以下 URL の Reports API のサンプルプログラムも参考にして、下図のような一覧を作成し、履歴として残せるようにしました。

プログラムの出力結果

上図のような一覧を作成するプログラムを作ってみましたが、いくつか気付いたことがありました。

取得できるのは 3日前のデータから

利用状況を表示することもあって、今日や昨日(1日前)のデータは取得できません。前出の管理コンソールのレポートに表示されている値も、最新として 3日前のデータが表示されているように、3日前のデータしか取得できません。
それよりも新しい日付(当日、1日前、2日前)で取得すると、API の結果は空(からっぽ)になってしまいます。

2021/09/21 より前が取得できない

上述の get でデータを取得しようとしたところ、2021/09/21 より前のデータを取得しようとしたところ、下図のようにエラーが発生しました。

2021/09/21 より前が取得できない

わたしが所属する組織が利用している Google Workspace for Education に限った話なのか、他の組織でも同様なのかわかりませんが、2021/09/21 以降のデータを取得して、スプレッドシートに記録として残すことを目的としました。

管理コンソールとの誤差など

Reports API で得られた値は、ストレージの使用量を示すものは、どれも MB を単位としていましたが、管理コンソールで表示される値がスッキリと一致しないように見受けられました。

  • MB を GB や TB に変換する際に、1000 と 1024 のどちらで割るか、といった違いではないような誤差が見受けられました。

  • Account Parameters」には、customer_used_quota_in_mb と total_quota_in_mb という似たような項目が存在している。管理コンソールに表示されている値は、前者を 1024 で変換した数値のようだが、2021/09/21 ~ 2022/03/06 の値は取得できず、2022/03/07 以降のデータしか取得できなかった。

    • customer_used_quota_in_mb
      Total storage quota used by the domain in megabytes

    • total_quota_in_mb
      Total storage quota (in MB) for the domain.

  • 「Classroom Parameters」では、Google Classroom の利用状況について取得できるが、不定期に得られる値が 0 となっている場合がありました。
    以下のような過去 30日間の状況を示す値なので 0 になるとは考えられず、翌日のデータが問題なかったりするので、原因不明です。

    • num_30day_students
      Students who accessed Classroom in the last 30 days.

作成したプログラム

作成したプログラムは以下のような感じです。
このプログラムを実行できるのは、Reports API を利用できるだけの権限を有しているアカウントでなければなりません。

Google スプレッドシートを作成し、上記の GAS のプログラムをスクリプトエディタに貼り付けてください。

GAS のスクリプトエディタを起動する

GAS のプログラムをはじめて実行するときには、以下 URL で説明しているように、初回だけ権限の確認が行われます。その辺りの説明は、以下の記事をご覧ください。

  1. プログラム中の startData 関数を実行すると、2021/09/21 から今日までのデータをスプレッドシートに出力します。

  2. プログラム中の getInfo 関数をトリガー関数として、下図のように「時間主導型」→「日付ベースのタイマー」として設定します。 ※「時刻を指定」には適当な時間帯を設定してください。

トリガー関数を設定

このように設定しておくことで、最新の情報をスプレッドシートに記録し続けてくれます。 ※表示する項目については、プログラムをカスタマイズしなければなりません。
記録されたデータをグラフ化するなどして活用してください。このプログラムによって、何かの効果が得られることを期待します…

最後に

今回のプログラムは、誰でも実行できるものではありません。全体管理者など、相応の権限を有したアカウントでなければ実行できない点に注意してください。

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

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

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

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

わたし自身にしてみると、このような「スクリプトを作ること」が目的になっているような感じですが、このスクリプトが何かの役に立てば幸いです。

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