Skip to content

Instantly share code, notes, and snippets.

@W-Yoshida
Last active March 7, 2022 07:28
Show Gist options
  • Save W-Yoshida/d76a1432a323257692947a035bc7c83a to your computer and use it in GitHub Desktop.
Save W-Yoshida/d76a1432a323257692947a035bc7c83a to your computer and use it in GitHub Desktop.
Google共有ドライブの権限一覧を出力するGAS
var ss = SpreadsheetApp.getActiveSpreadsheet();
var activeSheet = ss.getSheets()[0];
function exportGoogleDrivePermissionr() {
firstStep();
adminListAllTeamDrives();
}
function firstStep(sheetName) {
//シートをクリア
activeSheet.clear();
activeSheet.getRange(1, 1).setValue("ドライブ名")
activeSheet.getRange(1, 2).setValue("ドライブID")
activeSheet.getRange(1, 3).setValue("管理者")
activeSheet.getRange(1, 4).setValue("コンテンツ管理者")
activeSheet.getRange(1, 5).setValue("投稿者")
activeSheet.getRange(1, 6).setValue("閲覧者(コメント可)")
activeSheet.getRange(1, 7).setValue("閲覧者")
activeSheet.getRange("A1:G1").setBackground("#7169e5");
activeSheet.getRange("A1:G1").setFontColor("#ffffff");
}
function adminListAllTeamDrives(){
//変数の宣言
var pageTokenDrive;
var pageTokenMember;
var teamDrives;
var memberPermissions;
//権限ごとのアドレスを格納
var organizerData = '';
var fileOrganizerData = '';
var writerData = '';
var commenterData = '';
var readerData = '';
//ドライブ名の一覧を取得
do{
teamDrives = Drive.Drives.list({pageToken:pageTokenDrive,maxResults:100,useDomainAdminAccess:true})
if(teamDrives.items && teamDrives.items.length > 0){
for (var i = 0; i < teamDrives.items.length; i++) {
var teamDrive = teamDrives.items[i];
//ドライブ名の一覧情報を転記
activeSheet.getRange(i+2, 1).setValue(teamDrive.name)
//ドライブIDを転記
activeSheet.getRange(i+2, 2).setValue(teamDrive.id)
//ドライブごとのメンバーの権限を取得
do{
memberPermissions = Drive.Permissions.list(teamDrive.id, {pageToken:pageTokenMember,supportsAllDrives:true}) ;
if(memberPermissions.items && memberPermissions.items.length > 0){
for (var j = 0; j < memberPermissions.items.length; j++) {
var permission = memberPermissions.items[j];
//権限ごとに場合分けして変数に格納
switch(permission.role){
case "organizer":
organizerData += permission.emailAddress + String.fromCharCode(10) ;
break;
case "fileOrganizer":
fileOrganizerData += permission.emailAddress + String.fromCharCode(10) ;
break;
case "writer":
writerData += permission.emailAddress + String.fromCharCode(10) ;
break;
case "commenter":
commenterData += permission.emailAddress + String.fromCharCode(10) ;
break;
case "reader":
readerData += permission.emailAddress + String.fromCharCode(10) ;
break;
}
}
//権限ごとに格納した内容を転記
activeSheet.getRange(i+2,3).setValue(organizerData.trim());
organizerData = '';
activeSheet.getRange(i+2,4).setValue(fileOrganizerData.trim());
fileOrganizerData = '';
activeSheet.getRange(i+2,5).setValue(writerData.trim());
writerData = '';
activeSheet.getRange(i+2,6).setValue(commenterData.trim());
commenterData = '';
activeSheet.getRange(i+2,7).setValue(readerData.trim());
readerData = '';
activeSheet.getRange(i+2,1,i+2,6).setWrap(true);
activeSheet.getRange(i+2,1,i+2,6).setVerticalAlignment('top');
activeSheet.getRange(i+2,1,i+2,6).setHorizontalAlignment('left');
}else{
Logger.log("メンバー/権限が見つかりませんでした。");
}
//次のメンバーのpageTokenを取得する
pageTokenMember = memberPermissions.nextPageTokens;
}while(pageTokenMember)
}
}else{
Logger.log("共有ドライブが見つかりませんでした。");
}
//次のドライブのpageTokenを取得する
pageTokenDrive = teamDrives.nextPageToken
}while(pageTokenDrive)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment