はじめに
本記事は、Google Workspaceを利用している組織のシステム管理者が、
Googleドライブにおいて、特定アカウントの共有ドライブのアクセス権を
一括で削除する手順について説明します。
実行結果
事前準備
-
対象のすべての共有ドライブ対し、システム管理者(スクリプト実行者)を
「管理者」として追加します。
[Google Workspace管理コンソール] → [アプリ] → [Google Workspace] → [ドライブとドキュメントの設定] → [共有ドライブの管理] → 対象の共有ドライブの[メンバーを管理] → システム管理者のアカウントを入力 → [管理者]を選択 → [共有]
-
Apps Scriptにて「新しいプロジェクト」を作成し「Drive API」を追加します。
[Apps Script] → [新しいプロジェクトを作成] → サービス[+] → [Drive API] → [追加]
スクリプト
定数「email_adr」の値として、対象アカウントのメールアドレスを入力してください。
初回実行時はプロジェクトへの承認が求められますので、許可してください。
// アクセス権を一括削除するアカウントのメールアドレスを入力
const email_adr = "xxx@hogehoge.com"
const query_param = {
"supportsAllDrives" : true,
"useDomainAdminAccess" : true
}
let drv_list, drv_id, drv_name, drv_token;
let prm_list, prm_id;
function myFunction() {
do {
drv_list = Drive.Drives.list({
maxResults : 100,
pageToken : drv_token,
useDomainAdminAccess : true
});
for (let i = 0; i < drv_list.items.length; i++) {
drv_id = drv_list.items[i].id;
drv_name = drv_list.items[i].name;
prm_list = Drive.Permissions.list(
drv_id, query_param
);
for (let j = 0; j < prm_list.items.length; j++) {
if (prm_list.items[j].emailAddress === email_adr) {
prm_id = prm_list.items[j].id
Drive.Permissions.remove(
drv_id, prm_id, query_param
);
console.log("Permission removed : " + drv_name);
break;
}
}
}
drv_token = drv_list.nextPageToken;
} while (drv_token);
}
参考
Drives: list | Drive API | Google Developers
https://developers.google.com/drive/api/v2/reference/drives/list
Permissions: delete | Drive API | Google Developers
https://developers.google.com/drive/api/v2/reference/permissions/delete
注
上記APIリファレンスでは、アクセス権(「Permissions」リソース)の削除に
「delete」メソッドが用いられていますが、うまく動作しませんでした。
Apps Scriptのエディタでは、下図のとおり「remove」メソッドがサジェストされるため、
上記スクリプトはこちらで記述しました。