Driveファイルの権限をGASで一括チェック

GASDriveセキュリティ
Driveファイルの権限をGASで一括チェックのサムネイル

Driveファイルの権限をGASで一括チェック


はじめに:中小企業やフリーランスにこそGAS

お疲れ様です。GASおじです。Google Workspaceの便利さは折り紙つきですが、意外と見落としがちなのが「Driveファイルの権限管理」。特に中小企業やフリーランスの皆さんは、ファイルを共有しすぎて情報漏洩リスクを抱えてしまうこともあります。そこで今回は、Google Apps Script(以下GAS)を使ってDrive内のファイル権限を一括チェックする方法を紹介します。

もちろん、既存のデータを消したりはしません。権限情報を新しい日時付きのスプレッドシートにまとめて、あとでじっくり確認できる形をとります。これで誤ってファイルを消すリスクもゼロ。さらに、実行に必要な初期設定や権限、復元手順も丁寧に解説しますので安心してください。


なぜ権限管理が重要なのか?

中小企業やフリーランスの現場では、Google Driveを使ったファイル共有が日常茶飯事。つい「この人には見せていいかも」と思って権限を付与し続けると、知らず知らずのうちにアクセス権限が広がり過ぎてしまいます。

この状態を放置すると、

  • 不要な人までファイルが見れる状態に
  • 競合他社や外部に情報が漏れるリスク増大
  • 取引先や顧客の個人情報が漏洩する恐れ

といった問題に発展しかねません。権限の棚卸しは「情報資産の守り」として非常に重要です。


GASでDriveファイルの権限一覧を取得するコード例

ここからは実際のコード例です。Drive APIを使って特定フォルダ以下のファイル権限を取得し、新規作成したスプレッドシートに結果を書き込みます。既存ファイルの更新や削除はしません。

function checkDriveFilePermissions() {
  // 1. 対象フォルダIDを指定(ルートの場合はDriveApp.getRootFolder()を使う)
  const folderId = 'あなたのフォルダIDをここに入れてください';

  // 2. 新規スプレッドシートを作成(日時付き)
  const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const ss = SpreadsheetApp.create(`Drive権限一覧_${timestamp}`);
  const sheet = ss.getActiveSheet();

  // 3. ヘッダーを書き込む
  const headers = ['ファイル名', 'ファイルID', '権限タイプ', '権限の役割', '権限のユーザー/グループ'];
  sheet.appendRow(headers);

  // 4. フォルダ内のファイルを取得
  const folder = DriveApp.getFolderById(folderId);
  const files = folder.getFiles();

  // 5. データ格納用配列
  const data = [];

  while(files.hasNext()) {
    const file = files.next();
    const fileId = file.getId();
    const fileName = file.getName();

    // Drive APIを使って権限を取得(Drive APIの利用を有効にしておくこと)
    const permissions = Drive.Permissions.list(fileId).items;

    permissions.forEach(permission => {
      data.push([
        fileName,
        fileId,
        permission.type,
        permission.role,
        permission.emailAddress || permission.domain || permission.value || ''
      ]);
    });
  }

  // 6. まとめて書き込み(バッチ書き込みでコストカット)
  sheet.getRange(2, 1, data.length, headers.length).setValues(data);

  // 7. 完了メッセージ
  Logger.log(`権限一覧をスプレッドシートに出力しました: ${ss.getUrl()}`);
}

初期設定と必要権限について

  • Drive APIの有効化
    GCPコンソールでDrive APIを有効にしてください。
    (GASエディタの「リソース」 → 「Google Cloud Platform プロジェクト」 → APIを有効化)

  • スクリプトの権限
    実行時にGoogleアカウントのDriveファイル閲覧権限が必要です。
    「Driveファイルの表示および管理」権限を付与してください。

  • 個人情報の取扱い
    取得する情報は権限情報のみですが、メールアドレスなど個人情報が含まれます。社内での取り扱いには十分注意しましょう。

  • トリガー設定
    定期的に権限チェックしたい場合は、インストール型トリガー(時間主導型)を設定してください。
    (スクリプトエディタの「時計」アイコンから設定可能)


万が一のためのバックアップ・復元手順

今回のコードは既存データを書き換えませんが、念のため以下を推奨します。

  • スプレッドシートのバックアップ
    複数回実行して過去の権限状態を保存することで、いつでも比較・復元可能に。

  • Google Driveのファイル権限は手動復元が基本
    スクリプトで一括権限変更は慎重に。誤操作防止のため権限情報の「閲覧」だけに留める運用がおすすめ。

  • 変更履歴の活用
    Driveのファイル自体の変更履歴や、Google Workspaceの監査ログも活用すると安心です。


コスト削減の目安と注意点

GASはGoogleアカウントの利用枠内で追加の専用SaaS料金なしに使えますが、実行時間やAPI呼び出し回数のquota・実行上限があります。大量ファイルを対象にする場合は分割処理など工夫が必要です。

たとえば、100ファイルの権限一覧を月1回チェックし、不要な権限を見直すだけで、仮に月額1,000円の情報漏洩リスク対応コストが削減できるとします。
計算例:
情報漏洩対応コスト1,000円 × 12ヶ月 = 12,000円/年のリスク対策効果(仮定)

ただし、あくまで一例ですので、実際の効果は環境や運用状況に依存します。


まとめ

  • Driveファイルの権限管理は情報漏洩防止に必須
  • GASで一括チェックし、結果を新規シートに出力するのがおすすめ
  • 既存データは消さず、誤操作リスクを回避
  • Drive APIの有効化や必要権限の付与を忘れずに
  • 定期実行にはインストール型トリガーを活用
  • Googleアカウントの利用枠内でコストを抑えられるが、Quotaには注意

中小企業やフリーランスの皆さんが安心してGoogle Workspaceを活用するために、ぜひこの方法を試してみてください。権限の見える化がセキュリティアップの第一歩です。


GASおじラボで500ツール使い放題 →