LoginSignup
1
3

More than 1 year has passed since last update.

【GAS】Googleドライブ:特定アカウントの共有ドライブアクセス権一括削除

Last updated at Posted at 2022-10-13

はじめに

本記事は、Google Workspaceを利用している組織のシステム管理者が、
Googleドライブにおいて、特定アカウントの共有ドライブのアクセス権を
一括で削除する手順について説明します。

実行結果

execlog.png
※上図に登場する団体・名称等はすべて架空のものです。

事前準備

  1. 対象のすべての共有ドライブ対し、システム管理者(スクリプト実行者)を
    「管理者」として追加します。

    [Google Workspace管理コンソール] → [アプリ] → [Google Workspace] → [ドライブとドキュメントの設定] → [共有ドライブの管理] → 対象の共有ドライブの[メンバーを管理] → システム管理者のアカウントを入力 → [管理者]を選択 → [共有]
    AdminConsole.png

  2. Apps Scriptにて「新しいプロジェクト」を作成し「Drive API」を追加します。

    [Apps Script] → [新しいプロジェクトを作成] → サービス[+] → [Drive API] → [追加]
    AppsScript.png

スクリプト

定数「email_adr」の値として、対象アカウントのメールアドレスを入力してください。
初回実行時はプロジェクトへの承認が求められますので、許可してください。

script.gs
// アクセス権を一括削除するアカウントのメールアドレスを入力
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」メソッドがサジェストされるため、
上記スクリプトはこちらで記述しました。

saggest.png

1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3