Google Apps Scriptでグループアドレスの作成・削除を行う

Google Apps Scriptで地味な存在ながら非常に重要な機能を担ってるのが「Googleグループ」。単なるメーリングリストとしての機能だけではなく、Google Driveのアクセス権をまとめて付与する場合にも、このグループのアドレスで管理したりします。

そんなグループアドレスを作成するにはちょっと手間が必要です。

今回使用するスプレッドシート

グループの作成で利用するメソッドは、Google Workspaceの管理者権限が必要です。よって通常のユーザ権限では実行ができないので要注意。今回のコードでは紹介していませんが、Enterprise Standard以上で使える動的グループについては、Admin SDKではなくCloud Identity APIを使って作成が出来るようです。

事前準備

グループの作成は1つのメソッドではなく、3つのメソッドを使って作成する必要があります。また、その際に利用するクラスは

スクリプトエディタを開き、左サイドバーのサービスの+をクリックして以下の追加を行います。

  1. Admin SDK APIを追加する
  2. GroupSettings APIを追加する

図:2つのサービスが必要です

ソースコード

グループを作成 => グループ設定を変更 => メンバーを追加という3ターンで1グループが作成できます。

グループの作成

  • AdminDirectory.Groups.insertで追加します
  • emailがグループアドレスの指定場所
  • nameがグループ名を指定する場所です

グループ設定変更

このグループ作成で一番配慮しなければいけないのが、グループのアクセス設定。一歩間違えると社内のメールが外部の第三者にだだ漏れという事件が嘗てありましたが、それが起こりかねません。また勝手に外部のメンバーがリクエストしてグループに入れるというのもマズイ。

また、内部の人間にむやみに権限を与えて、外部メンバーを追加できてしまうというのもまたマズイということでこれらのアクセスタイプ。これをよく考えてコードで設定する必要があります。

アクセスタイプについて

次のコードのoptionの中身がグループに対する様々なアクセス権を設定するものになります。主によく使うパターンは以下内容になります。

  • whoCanViewMembership(メンバーを表示できるユーザ)
    ALL_IN_DOMAIN_CAN_VIEW = 組織全体
    ALL_MEMBERS_CAN_VIEW = グループメンバー
  • whoCanContactOwner(グループのオーナーに連絡出来るユーザ)
    ANYONE_CAN_CONTACT = 外部含め誰でも
    ALL_MEMBERS_CAN_CONTACT = グループメンバー
  • whoCanViewGroup(会話を閲覧できるユーザ)
    これが一番重要な設定で誤った設定をすると第三者にグループメールの中身が世界中に漏洩することになります。
    ALL_IN_DOMAIN_CAN_VIEW = 組織内なら誰でも
    ALL_MEMBERS_CAN_VIEW = グループメンバー
  • whoCanPostMessage(投稿出来るユーザ)
    こちらも通常はメンバー以外の投稿を認めない設定が良いでしょう
    ANYONE_CAN_POST = 外部含め誰でも
    ALL_MEMBERS_CAN_POST = グループメンバー

    ALL_IN_DOMAIN_CAN_POST = ドメイン内のメンバーならだれでも
  • whoCanModerateMembers(メンバーの管理)
    通常メンバーにメンバーの管理権限は与えません
    OWNERS_ONLY = オーナーのみ
    OWNERS_AND_MANAGERS = オーナーとマネージャのみ
  • whoCanJoin(グループに参加できるユーザ)
    CAN_REQUEST_TO_JOIN = 組織内全員がリクエスト出来る
  • allowExternalMembers(組織外のメンバーの許可)
    false = 外部メンバー追加はさせない
    true = 外部メンバーを追加を許可する
    ※但し、trueでなくとも管理コンソールからは追加できる。しかしGASからはtrueにしておかないと外部メンバーは追加できない

ソースコード

  • optionにて、アクセスタイプを定義します
  • 今回のオプションは社内で利用する場合に推奨されるパターンのオプションとなります。
  • AdminGroupsSettings.Groups.patchにてアクセスタイプを反映させます
  • groupaddressにはグループアドレスを入れます。

図:これがアクセスタイプ

メンバーの追加

  • member変数でJSON形式でメンバーのアドレスを構築
  • AdminDirectory.Members.insertにてメンバーを追加する
  • groupaddressにてグループアドレスを指定する

グループの削除

作成済みのグループアドレスの削除は非常に簡単です。AdminDirectory.Groups.removeに対してメアドを渡して実行するだけです。

関連リンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)