Google Driveの共有しすぎを変更前に発見|GASで権限を読み取り専用監査

Google Driveの共有しすぎを変更前に発見|GASで権限を読み取り専用監査

Gasおじ|GoogleアカウントをAIエージェント化

Gasおじ|GoogleアカウントをAIエージェント化

Driveの整理で怖いのは、必要な共有を消すことより、気づかないまま「リンクを知っている全員」へ公開しているファイルを残すことです。

この記事では、指定フォルダ直下のファイルを対象に、共有範囲と共同編集者・閲覧者の人数だけを一覧化します。権限は変更しません。まず監査結果を確認し、変更はDrive画面から人が判断する安全な最小例です。

先に決める安全ルール

  • 対象は検証用フォルダに限定する
  • メールアドレスはログへ出さず人数だけ記録する
  • スクリプトから共有設定を変更しない
  • 「要確認」は自動解除せず、所有者がDrive画面で確認する

監査結果シートを用意する

スプレッドシートに `PermissionAudit` シートを作ります。出力列は、確認日時、ファイル名、ファイルID、一般公開、リンク共有、編集者数、閲覧者数、判定です。

コピーして試せるGAS

`FOLDER_ID` を検証用フォルダのIDへ置き換えてから実行してください。ファイルの追加・削除・共有変更は行いません。

const FOLDER_ID = '検証用フォルダID';
const SHEET_NAME = 'PermissionAudit';
const MAX_FILES = 100;

function auditDrivePermissionsReadOnlyFree() {
  if (!FOLDER_ID || FOLDER_ID === '検証用フォルダID') {
    throw new Error('検証用フォルダIDを設定してください');
  }

  const folder = DriveApp.getFolderById(FOLDER_ID);
  const files = folder.getFiles();
  const rows = [];
  let checked = 0;

  while (files.hasNext() && checked < MAX_FILES) {
    const file = files.next();
    const access = file.getSharingAccess();
    const isPublic = access === DriveApp.Access.ANYONE;
    const isLinkShared = access === DriveApp.Access.ANYONE_WITH_LINK;
    const editors = file.getEditors().length;
    const viewers = file.getViewers().length;
    const verdict = isPublic || isLinkShared ? '要確認' : '限定共有';

    rows.push([
      new Date(), file.getName(), file.getId(),
      isPublic, isLinkShared, editors, viewers, verdict
    ]);
    checked++;
  }

  const sheet = SpreadsheetApp.getActive().getSheetByName(SHEET_NAME);
  if (!sheet) throw new Error('PermissionAuditシートを作成してください');
  sheet.clearContents();
  sheet.getRange(1, 1, 1, 8).setValues([[
    '確認日時', 'ファイル名', 'ファイルID', '一般公開',
    'リンク共有', '編集者数', '閲覧者数', '判定'
  ]]);
  if (rows.length) sheet.getRange(2, 1, rows.length, 8).setValues(rows);
  console.log(`監査件数: ${rows.length}(共有設定は変更していません)`);
}

実行後の確認手順

1. まずコピーした検証用フォルダで実行する

2. `要確認` 行のファイルIDをDriveで開く

3. 業務上必要な共有か、所有者と期限を確認する

4. 変更が必要ならDrive画面で一件ずつ行う

5. 再実行し、意図した共有範囲になったか確認する

この無料例の制約

直下100件だけを確認し、サブフォルダは再帰走査しません。共有ドライブや組織ポリシーでは取得結果が異なる場合があります。また、人数だけでは共有相手の妥当性を判断できません。削除や権限変更を自動化せず、人の確認材料として使ってください。

ファイル棚卸しもまとめて行いたい方へ

Drive内のファイル一覧、更新日、所有者などを整理して、継続的な棚卸しへつなげたい場合はこちらをご覧ください。

DriveFileList Pro(Driveファイル一覧化GAS)を見る

Gasおじの公開中Tips商品は一覧から確認できます。

GasおじのTips商品一覧を見る


あなたも記事の投稿・販売を
始めてみませんか?

Tipsなら簡単に記事を販売できます!
登録無料で始められます!

Tipsなら、無料ですぐに記事の販売をはじめることができます Tipsの詳細はこちら
 

この記事のライター

Gasおじ|GoogleアカウントをAIエージェント化

おう、Gasおじだ。 AIツールとSaaSに散々突っ込んで遠回りした結果、最後に強かったのは「今あるGoogleアカウント」だった。 今ではAIエージェントであらゆるタスクを自動化して無双してるぞ。 GAS、スプレッドシート、フォーム、Gmail、AIエージェントを組み合わせれば、個人でも小さな会社でも、手作業だらけの業務はかなり自動化できる。 ここでは机上のAI論じゃなく、現場で動くテンプレ、コード、手順だけを置いていくぞ。 高いツールを増やす前に、まずお前さんのGoogleアカウントを仕事するエージェントに変えようじゃないか。

このライターが書いた他の記事

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
  • GASのtry-catch入門|元データを守るエラー処理とログの実装例

  • Gasおじ式 X投稿キュー自動実行GAS Pro|危ない時だけ止まる

    ¥2,980
    1 %獲得
    (29 円相当)

関連のおすすめ記事

  • USBメモリで持ち運べるLinux Mint 22.1と永続的な書き込み領域の作成法【Rufus だけで作成する方法を初心者向けに徹底解説】

    ¥500
    1 %獲得
    (5 円相当)
    SmartSenior

    SmartSenior

  • Gmailの定型連絡を「送信せず」まとめて下書き化する|Gmail下書きテンプレGAS Pro

    ¥2,980
    1 %獲得
    (29 円相当)
    Gasおじ|GoogleアカウントをAIエージェント化

    Gasおじ|GoogleアカウントをAIエージェント化

  • 【Python】 Con-Que 【データベース接続】

    ¥3,000
    1 %獲得
    (30 円相当)
    GoGorilla

    GoGorilla