Skip to content

Instantly share code, notes, and snippets.

@W-Yoshida
Last active December 25, 2021 11:54
Show Gist options
  • Save W-Yoshida/35eec34faf8433c838ad55bd94909b45 to your computer and use it in GitHub Desktop.
Save W-Yoshida/35eec34faf8433c838ad55bd94909b45 to your computer and use it in GitHub Desktop.
Googleグループを一括で作成・初期設定するGAS

Googleグループを一括で作成・初期設定するGAS

使い方

以下のフォーマットのスプレッドシートを作成し、作成したいグループの情報を入力。

Email Name Description Result
group-1@example.com グループ1 グループの説明
group-2@example.com グループ2 グループの説明

※Resultセルに値が入っているレコードは無視されるので、空欄にしておく

必要な情報を入力後、スプレッドシートの「GAS実行」メニューから実行。

補足

・グループの初期設定内容についてはコードに記載の通り

・各プロパティの詳細は以下のG Suite Admin SDKのリファレンスを参照

 https://developers.google.com/admin-sdk/groups-settings/v1/reference/groups

・Googleグループの設定と管理については以下のnoteにまとめています

 https://note.com/w_yoshida/n/n2d31b254d005

var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
//実行メニューを作成
function onOpen() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu("GAS実行");
menu.addItem("Googleグループ一括作成", "createGoogleGroup");
menu.addToUi();
}
function createGoogleGroup() {
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[3]) {
var result = "";
try
{
//Groupの作成(コメントアウトすることでGroupのプロパティ更新のみ実行可能)
AdminDirectory.Groups.insert({email: row[0], name: row[1], description: row[2]});
//Groupのプロパティ更新
var group = AdminGroupsSettings.Groups.get(row[0]);
group.whoCanViewMembership = "ALL_MEMBERS_CAN_VIEW";
group.whoCanViewGroup = "ALL_MEMBERS_CAN_VIEW";
group.whoCanPostMessage = "ANYONE_CAN_POST";
group.whoCanModerateMembers = "OWNERS_AND_MANAGERS";
group.whoCanJoin = "CAN_REQUEST_TO_JOIN";
group.whoCanLeaveGroup = "NONE_CAN_LEAVE";
group.whoCanDiscoverGroup = "ALL_MEMBERS_CAN_DISCOVER";
group.isArchived = "true";
group.spamModerationLevel = "ALLOW";
AdminGroupsSettings.Groups.patch(group, row[0]);
result = "Success";
}catch(e){
result = "Error:" + e;
}
//実行結果をResult列にセット
sheet.getRange(row.rowNumber, 4).setValue(result);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment