見出し画像

#09 組織部門の一覧を作成する

単一の学校で「Google Workspace for Education」を利用しているのであれば、そんなに複雑だったり、多階層にはならないのでしょうが、教育委員会管轄の学校を単一の「Google Workspace for Education」で運用している場合には、複雑な組織部門になっているかと思います。

管理コンソールで一覧表示できるものの、設定内容を印刷したり、データとしてエクスポートしたりはできないので、GAS でスクリプトを作成してみました。

注意事項

  • 今回の GAS によるスクリプトは、スクリプトを実行するアカウントが当該「Google Workspace for Education」で「組織部門 > 読み込み」の権限を持っていなければ、実行してもエラーになります。

  • 前項の権限を有していても、その権限が有効な範囲の組織部門しか一覧にできません。

ということで、実質的には 特権管理者 の権限を持ったアカウントで実行するための管理を補助するためのスクリプトです。

作成したスクリプト

作成したスクリプトは、以下の通りです。

使い方

今回のスクリプトは、

  • 「ツール」→「スクリプトエディタ」で開いたエディタ部分に、上記のスクリプトをまるまる貼り付けて保存し、スプレッドシートを再読み込みすると、以下のように「組織部門の取得」というメニューが表示されるようになります。

スクリプトで表示されるメニュー
  • 「組織部門の取得」→「組織部門の取得」と選択すると、権限に応じた組織部門の取得を行って、スプレッドシートに書き出します。

  • AdminDirectory.Orgunits.list( ) の第一引数は、よくわからないけれど、"my_customer" という文字列を指定するみたい。何の意味があるんだろう?

  • 以下の URL で説明されているような、組織部門に関する情報を保存したクラス「OrgUnit」の内容を、すべて表示しています。表示している順番は、以下の URL で説明されている順ではなく、わたしの主観で必要性が高いと思われる順になっています。

  • 閲覧しやすいように、以下の URL のメソッドを用いて、行や列の固定を行っています。
    https://developers.google.com/apps-script/reference/spreadsheet/sheet#setfrozenrowsrows
    https://developers.google.com/apps-script/reference/spreadsheet/sheet#setfrozencolumnscolumns

  • 組織部門の名前に入学年度を半角英数字だけで設定されていた場合に、名前ではなく数字と判断されてしまうのを避けるために、セルには表示形式として「書式なしテキスト」を設定しています。表記形式として "@" を指定するとよいことを、今回学びました。
    sheet.getRange( row, j ).setNumberFormat( "@" );

  • 「表示形式」→「セルの折り返し」→「切り詰める」とするために、以下の設定をそれぞれのセルに行っています。
    sheet.getRange( row, j ).setWrapStrategy( SpreadsheetApp.WrapStrategy.CLIP );

  • API で組織部門の一覧を取得すると、順不同で保存されているため、スプレッドシートに書き出した後で、orgUnitPath をキーに並び替えを行っています。

といった感じです。今回のスクリプト作成で、スプレッドシートを操作する API についても詳しくなれたように感じます。当たり前ですが、メニューから選択するだけで行えるような操作は、簡単に GAS でも行えるようです。

最後に

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

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

  • スプレッドシートへの書き出しを行っていますが、上記で説明している以外の場所への書き出しや収集などは行っていません。

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

冒頭で説明したように、権限をもったアカウントでなければ実行できないものですが、何かの役に立てば幸いです。


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