はじめに
本記事は、Google Workspaceを利用している組織のシステム管理者が、
Googleドライブの共有ドライブにおいて、特定アカウントのアクセス権を
一括で付与する手順について説明します。
実行結果
※上図および本記事に登場する団体・名称・ID等はすべて架空のものです。
事前準備
-
対象のすべての共有ドライブ対し、システム管理者(スクリプト実行者)を
「管理者」として追加します。
[Google Workspace管理コンソール] → [アプリ] → [Google Workspace] → [ドライブとドキュメントの設定] → [共有ドライブの管理] → 対象の共有ドライブの[メンバーを管理] → システム管理者のアカウントを入力 → [管理者]を選択 → [共有]
-
新しいスプレッドシートを作成し、Apps Scriptに「Drive API」を追加します。
[Googleシート] → [新しいスプレッドシートを作成] → [拡張機能]タブ → [Apps Script]→
サービス[+] → [Drive API] → [追加]
-
上記で作成したシートに、アクセス権を設定する共有ドライブ一覧を作成します。
共有ドライブ一覧は、私の書いた以下の記事なども参考にしてください。
【GAS】Googleドライブ:共有ドライブID一覧出力
スクリプト
定数「req_body」の値として、以下の情報を入力してください。
- role: 対象アカウントの役割(アクセス権の種別)[注]
- type: アカウント種別
- value: 対象アカウントのメールアドレス
初回実行時はプロジェクトへの承認が求められますので、許可してください。
const act_sheet = SpreadsheetApp.getActive().getActiveSheet();
const array = act_sheet.getDataRange().getValues();
const req_body = {
"role" : "reader", // organizer, fileOrganizer, writer, reader
"type" : "user", // user, group, domain, anyone
"value": "xxx@hogehoge.com" // Email address
};
const query_param = {
"sendNotificationEmails" : false,
"supportsAllDrives" : true
};
function myFunction() {
array.shift();
try{
for (let i in array) {
let drv_id = array[i][1];
let drv_name = array[i][0];
Drive.Permissions.insert(
req_body, drv_id, query_param
);
console.log("Permission added : " + drv_name)
}
} catch (err) {
console.log (err);
}
}
参考
-
Permissions: insert | Drive API | Google Developers
https://developers.google.com/drive/api/v2/reference/permissions/insert -
Roles | Drive API | Google Developers
https://developers.google.com/drive/api/guides/ref-roles -
The Gift of Script: Set permissions on a Shared drive
https://www.pbainbridge.co.uk/2021/06/set-permissions-on-shared-drive.html -
【GAS】Googleドライブ:共有ドライブID一覧出力
https://qiita.com/o-_-o/items/ce08ee77f8f59d43efe8
注
Googleドライブにおける役割(アクセス権種別)の英語と日本語の対応は以下のとおりです。
詳しいアクセス権の内容については、参考にもあげたGoogleのリファレンスをご確認ください。
English | 日本語 |
---|---|
organizer | 管理者 |
fileOrganizer | コンテンツ管理者 |
writer | 投稿者 |
reader | 閲覧者 |