こんにちは、TIMの情報システム部門に所属している t_oikawa です。
Googleグループの一覧を確認したいとき、Googleグループアプリから確認する方法が一般的です。
参考:グループと投稿を見つけやすくする
TIMでは、Googleグループをメーリングリストとして利用していますが、目的のGoogleグループを探す際に、標準機能ではページ送りに時間がかかったり、うまく検索ができなかったり、不便に感じることがよくありました。
また、Googleグループ一覧表を手動でスプレッドシートに作成する方法を考えましたが、更新作業の運用が手間になるため、あまり現実的ではありません。
そこで、今回は Google App Script(GAS) を使ってGoogleグループの一覧を取得し、スプレッドシートに自動で表示するしくみを作ってみたので紹介します。
はじめに、Googleスプレッドシートを新規作成します。
スプレッドシートを開いたら、「拡張機能」タブの「App Script」をクリックします。
スクリプトを作成したら、「サービス」から「Admin SDK API」を追加します。
これにより、Google Workspace内で管理しているユーザーやグループのディレクトリ情報を取得できるようになります。
続いて、スクリプトのコードを作成します。コードは以下のとおりです。
//グループ一覧取得
function GetGroupList()
{
//取得グループのドメイン
var domainName = 'ドメイン名';
var maxResults = 200;
var pageToken = null;
var endFlag = false;
//アクティブなシートを取得する
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1").activate();
//シート初期化
ss.clear();
//スプレッドシートにセットするデータ
var values = [];
//ヘッダー追加
values.push(["グループ名", "メールアドレス", "メンバーURL", "説明"]);
while(!endFlag){
try{
//グループ一覧の取得
var groupsList = AdminDirectory.Groups.list({domain: domainName, maxResults: maxResults, pageToken: pageToken});
//データセット
for(var i = 0; i < groupsList.groups.length; i++){
var value = [];
//グループのデータをセット
value.push(groupsList.groups[i].name); //グループ名
value.push(groupsList.groups[i].email); //メールアドレス
group_name = groupsList.groups[i].email;//メールアドレスの@より前
members_url = "https://groups.google.com/a/" + domainName + "/g/" + group_name.slice(0,group_name.indexOf("@")) + "/members"; //グループのメンバー一覧を確認するURL
value.push(members_url);
value.push(groupsList.groups[i].description); //説明
//データ1行追加
values.push(value);
}
if(groupsList["nextPageToken"] == null){
endFlag = true;
}else{
pageToken = groupsList["nextPageToken"];
}
}catch(error) {
console.log(error);
}
}
//スプレッドシートにデータをセット
ss.getRange(1, 1, values.length, 4).setValues(values);
}
今回作成したスクリプトのポイントを簡単にまとめてみました。
pageToken
を利用することで、200件以上のグループを表示できるようにしています。手動でスクリプトを実行してGoogleグループ一覧を取得することもできますが、自動でスクリプトを実行できるトリガーを設定すると便利です。スクリプトエディタの画面左にある「トリガー」を開き、「トリガーの追加」を選択します。
以下の内容で設定をし、保存します。
「イベントのソースを選択」:「時間主導型」
「時間ベースのトリガーのタイプを選択」:「日付ベースのタイマー」
「時刻を選択」:任意(ここでは、毎朝9時〜10時の間に設定しています)
トリガー保存時にGoogle認証が要求されます。内容を確認し「Allow」を選択してください。
スクリプトが実行されるとスプレッドシートは以下のようになります。
また、トリガーが正常に動いていることも確認できました。
今回は Google App Script(GAS) を使ってGoogleグループの一覧を取得し、スプレッドシートに自動で表示するしくみを試してみました。Googleグループは多くの企業で利用されているサービスかと思いますので、参考にしてもらえると嬉しいです。