0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GASを使ってGoogleグループのメンバーを一括で追加(削除)する

Last updated at Posted at 2023-10-10

目的

GASを使って、Googleグループへのメンバー追加(削除)を一括で処理したい。

背景

GoogleグループをML等で活用する場合、入社時や依頼時に大量のメンバー追加(削除)が求められるので、その処理を簡単にしたいと考えました。

事前準備

下記のようなスプレットシートを用意しておきます。スプレットシート名は「member」とします。
image.png

画像の2行目以降は空白ですが、本来であれば以下の①~⑥の情報が入っている想定です。
①Member,②ML,③Email,④Action,⑤Result,⑥Interval

①:testuser@test.test(追加/削除したいメンバーのアドレス)
②:testgroup(Googleグループの@より前の部分)
③:testgroup@googlegroup(Googleグループのアドレス)
④:add or remove(追加ならadd、削除ならremove)
⑤:空白(GAS実行時に処理の結果が入力されます)
⑥:ALLMAIL or NOMAIL etc(詳しくは補足を参考ください)

コード

function mem_change() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('member');
  var lastColum = sheet.getLastColumn();
  var lastRow = sheet.getLastRow();
  var startRow = 2;
  var numRows = lastRow - 1;
  var dataRange = sheet.getRange(startRow, 1, numRows, lastColum);
  var data = dataRange.getValues();

  for (var i = 0; i < data.length; ++i) {
    var row = data[i];

    row.rowNumber = i + 2;

    // Result列がブランクであれば処理を実行
    if (!row[4]) {
      var result = "";

      try {
        var action = row[3];

        if (action === "add") {
          result = AdminDirectory.Members.insert({ email: row[0], role: "MEMBER", delivery_settings: row[5] }, row[2]);
          result = "Success";
        } else if (action === "remove") {
          result = AdminDirectory.Members.remove(row[2], row[0]);
          result = "Success";
        } else {
          result = "Error: Actionパラメータに誤りがあります。add/removeのいずれかをセットしてください。";
        }
      } catch (e) {
        result = "Error: " + e;
      }

      // 実行結果をResult列にセットします
      sheet.getRange(row.rowNumber, 5).setValue(result);
    }
  }

  // インターバルを設定
  Utilities.sleep(5000);

  // 2回目のループが何を行うかを追加する必要があります
  for (var i = 0; i < data.length; ++i) {
    var row = data[i];

    row.rowNumber = i + 2;

    // Result列がブランクであれば処理を実行
    if (row[5]) {
      var result = "";
      // 何かの処理を行う
    }
  }
}

補足

基本的に、参考情報にあるサイトのコードを活用しています(ほぼコピです笑)。
手を加えたところでいくと、F列のIntevalの設定の追加しています。

あまり知られていないことですが、Googleグループには所属するメンバーに対してメールを送るタイミングを細かく設定することができます。

このタイミングは、大きく3パターンあり、常に所属メンバーへメールを送る(通常の形)か、1日に1回昨日分のメールがまとめてメンバーに送られるパターン、そして一切メンバーにメールが送られないパターンです。

その設定をF列のところで行っています。細かい引数についてはGoogleGroupのAPIサイトから確認することができます。

また、メンバーを追加/削除する対象のGoogleグループの指定はあくまで③(C列)になります。
②(B列)は、GWSの管理コンソール上のGoogleグループの一覧表示の部分で、会社によってはアドレス表示で問題ないと思います(②を設定しなくても③が設定されていればOK)。

参考情報

Googleグループの設定と管理|吉田航|note

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?