🐴
GAS:Googleグループ管理詰め合わせ
Googleグループを出力する
概要
対象ドメインのGoogleグループを出力する。
500以上Hitする場合の処理は未記載。
ソース
function exportGoogleGroup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];スプレッドシートの1つ目のシートを選択
//対象ドメイン
var domainName = 'yourdomain.com';
//取得するグループの最大数(デフォルトは200)
var maxResults = 500;
//シートをクリア
sheet.clear();
var values = [];
//ヘッダー追加
values.push([
"メールアドレス",
"グループ名",
"説明",
"メンバー数",
"WhoCanJoin",
"whoCanViewMembership",
"whoCanViewGroup",
"whoCanInvite",
"whoCanAdd",
"allowExternalMembers",
"whoCanPostMessage",
"allowWebPosting",
"maxMessageBytes",
"isArchived",
"archiveOnly",
"messageModerationLevel",
"spamModerationLevel",
"showInGroupDirectory",
"whoCanLeaveGroup",
"whoCanContactOwner",
"whoCanApproveMembers",
"whoCanBanUsers",
"whoCanModifyMembers",
"whoCanApproveMessages",
"whoCanDiscoverGroup",
"CanContactOwner",
"whoCanJoin",
]);
//グループ一覧の取得
var groupsList = AdminDirectory.Groups.list({domain: domainName, maxResults: maxResults});
if(groupsList) {
for(var i = 0; i < groupsList.groups.length; i++){
var value = [];
//グループの基本情報を取得
value.push(groupsList.groups[i].email); //メールアドレス
value.push(groupsList.groups[i].name); //グループ名
value.push(groupsList.groups[i].description); //説明
value.push(groupsList.groups[i].directMembersCount); //メンバー数
//グループのプロパティを取得
var group = AdminGroupsSettings.Groups.get(groupsList.groups[i].email);
value.push(group["whoCanJoin"]);
value.push(group["whoCanViewMembership"]);
value.push(group["whoCanViewGroup"]);
value.push(group["whoCanInvite"]);
value.push(group["whoCanAdd"]);
value.push(group["allowExternalMembers"]);
value.push(group["whoCanPostMessage"]);
value.push(group["allowWebPosting"]);
value.push(group["maxMessageBytes"]);
value.push(group["isArchived"]);
value.push(group["archiveOnly"]);
value.push(group["messageModerationLevel"]);
value.push(group["spamModerationLevel"]);
value.push(group["showInGroupDirectory"]);
value.push(group["whoCanLeaveGroup"]);
value.push(group["whoCanContactOwner"]);
value.push(group["whoCanApproveMembers"]);
value.push(group["whoCanBanUsers"]);
value.push(group["whoCanModifyMembers"]);
value.push(group["whoCanApproveMessages"]);
value.push(group["whoCanDiscoverGroup"]);
value.push(group["whoCanContactOwner"]);
value.push(group["whoCanJoin"]);
values.push(value);
}
//取得したデータをスプレッドシートにセット
sheet.getRange(1, 1, groupsList.groups.length + 1 , 27).setValues(values);
}
}
Googleグループを作成
概要
スプレッドシートから値を取得して、
予め定めたセキュリティ設定を指定してGoogleグループを作成できる。
入力シートの見た目
ソース
function createGoogleGroup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[1];//スプレッドシートの2つ目のシートを選択
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
{
AdminDirectory.Groups.insert({email: row[0], name: row[1], description: row[2]});
//Groupのプロパティ更新
var group = AdminGroupsSettings.Groups.get(row[0]);
group.whoCanViewMembership = "ALL_IN_DOMAIN_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_IN_DOMAIN_CAN_DISCOVER";
group.isArchived = "true";
group.spamModerationLevel = "ALLOW";
group.allowExternalMembers = "true";
group.whoCanContactOwner = "ALL_MEMBERS_CAN_CONTACT";
group.whoCanJoin = "INVITED_CAN_JOIN";
AdminGroupsSettings.Groups.patch(group, row[0]);
result = "Success";
}catch(e){
result = "Error:" + e;
}
//実行結果をResult列にセット
sheet.getRange(row.rowNumber, 4).setValue(result);
}
}
}
Googleグループを編集
概要
スプレッドシートから値を取得して、
予め定めたセキュリティ設定を指定してGoogleグループを編集できる。
入力シートの見た目
ソース
function changeGoogleGroup() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[2];//スプレッドシートの3つ目のシートを選択
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;
//D列がブランクであれば処理を実行
if (!row[3]) {
var result = "";
try
{
//Groupのプロパティ更新
var group = AdminGroupsSettings.Groups.get(row[0]);
group.name =row[1];
group.description =row[2];
group.whoCanViewMembership = "ALL_IN_DOMAIN_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_IN_DOMAIN_CAN_DISCOVER";
group.isArchived = "true";
group.spamModerationLevel = "ALLOW";
group.allowExternalMembers = "true";
group.whoCanContactOwner = "ALL_MEMBERS_CAN_CONTACT";
group.whoCanJoin = "INVITED_CAN_JOIN";
AdminGroupsSettings.Groups.patch(group, row[0]);
result = "Success";
}catch(e){
result = "Error:" + e;
}
//実行結果をResult列にセット
sheet.getRange(row.rowNumber, 4).setValue(result);
}
}
}
メンバー追加or削除
概要
スプレッドシートから値を取得して、
予め定めたセキュリティ設定を指定してGoogleグループを編集できる。
入力シートの見た目
ソース
function modifyGoogleGroupMember(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[3];//スプレッドシートの4つ目のシートを選択
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
{
if(row[1] == "add")
{
result = AdminDirectory.Members.insert({email: row[2], role: "MEMBER"}, row[0]);
result = "Success";
}else if(row[1] == "remove")
{
result = AdminDirectory.Members.remove(row[0], row[2]);
result = "Success";
}else{
result = "Error:Actionパラメータに誤りがあります。add/removeのいずれかをセットしてください。"
}
}catch(e){
result = "Error:" + e;
}
//実行結果をResult列にセット
sheet.getRange(row.rowNumber, 4).setValue(result);
}
}
}
利用する前に
以下二つのAPI追加が必要。
- Admin SDK API:AdminDirectory
- Groups Settings API
- リソース→Googleの拡張サービス
- Admin SDK API:AdminDirectoryをOnに変更
- Groups Settings API をOnに変更
トラブルシュートFAQ
Q. 実行するとこんなエラーがでました
とか
とか。
A. Admin Directory APIを追加してください
追加したら再度実行して承認する
Q. またこんなエラーが!
A. Groups Settings APIを追加してください
追加したら再度実行して承認する
以上、他何かあればコメントください。
Discussion