共有フォルダの整理漏れを移動前に発見|GASで直下データをdry-run棚卸し

共有フォルダの整理漏れを移動前に発見|GASで直下データをdry-run棚卸し

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

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

共有フォルダを整理しようとしても、「同名ファイルがある」「古い資料が残っている」「何を移動すべきか判断できない」と、作業前の確認だけで時間がかかります。この記事では、指定フォルダの直下だけを読み取り、ファイル名・種類・更新日と同名候補を確認用シートへ出す無料のGAS例を紹介します。ファイルの移動・削除・共有設定変更は行いません。

先に知っておきたいこと

  • 対象は指定した1フォルダの直下だけです。子フォルダ内部は再帰走査しません。
  • `DRY_RUN = true` を固定し、元ファイルや共有権限を変更しません。
  • 閲覧権限のないファイルは取得できません。共有ドライブでは管理者設定や権限により一部情報を取得できない場合があります。
  • ファイルIDやメールアドレスはシートへ出しません。

準備するシート

スプレッドシートに `Config` と `AuditLog` の2枚を作ります。`Config` シートのA1に `folderId`、B1に監査対象フォルダのIDを入力してください。最初は実データではなく、少量の検証用フォルダで試します。

コピーして使える最小コード

const DRY_RUN = true;

function auditSharedFolderInventoryFree() {
  if (DRY_RUN !== true) throw new Error('安全のためDRY_RUN=trueで実行してください');

  const ss = SpreadsheetApp.getActive();
  const config = ss.getSheetByName('Config');
  const log = ss.getSheetByName('AuditLog') || ss.insertSheet('AuditLog');
  if (!config) throw new Error('Configシートがありません');

  const folderId = String(config.getRange('B1').getValue()).trim();
  if (!/^[A-Za-z0-9_-]{10,}$/.test(folderId)) {
    throw new Error('B1のフォルダIDを確認してください');
  }

  const folder = DriveApp.getFolderById(folderId);
  const rows = [];
  const nameCounts = {};
  const files = folder.getFiles();

  while (files.hasNext()) {
    const file = files.next();
    const name = file.getName();
    nameCounts[name] = (nameCounts[name] || 0) + 1;
    rows.push([
      'FILE',
      name,
      file.getMimeType(),
      file.getLastUpdated(),
      ''
    ]);
    if (rows.length > 500) throw new Error('501件以上です。対象を小さく分けてください');
  }

  const folders = folder.getFolders();
  while (folders.hasNext()) {
    const child = folders.next();
    const name = child.getName();
    nameCounts[name] = (nameCounts[name] || 0) + 1;
    rows.push(['FOLDER', name, '', child.getLastUpdated(), '']);
    if (rows.length > 500) throw new Error('501件以上です。対象を小さく分けてください');
  }

  const output = rows.map(row => {
    row[4] = nameCounts[row[1]] > 1 ? '同名候補' : '確認済み';
    return row;
  });

  log.clearContents();
  log.getRange(1, 1, 1, 5).setValues([['種別', '名前', 'MIMEタイプ', '更新日時', '判定']]);
  if (output.length) log.getRange(2, 1, output.length, 5).setValues(output);
  console.log(JSON.stringify({ folderName: folder.getName(), count: output.length, dryRun: DRY_RUN }));
}

実行手順

1. 対象スプレッドシートの「拡張機能」からApps Scriptを開き、コードを貼り付けます。

2. `Config!B1` に検証用フォルダのIDを入力します。

3. `auditSharedFolderInventoryFree` を選び、初回権限を確認して実行します。

4. `AuditLog` の件数・更新日時・「同名候補」を確認します。

5. 移動や削除が必要かはログを見て人が判断し、元データのバックアップ後に別作業として行います。

失敗しやすい点と停止条件

  • フォルダIDが空、形式不正、または閲覧権限がなければ停止します。
  • 501件以上なら途中で停止します。対象フォルダを分割して再実行してください。
  • 同名候補は重複確定ではありません。内容・所有者・更新日を人が確認してください。
  • `AuditLog` は毎回上書きされます。過去結果が必要なら実行前にシートを複製してください。
  • 共有ドライブ全体の網羅監査、権限変更、ファイル移動、削除はこの無料例の対象外です。

公開前チェックリスト

  • 元ファイルを移動・削除していない
  • 共有権限を変更していない
  • ファイルID、メールアドレス、認証情報をログへ出していない
  • 少量の検証用フォルダで件数と出力を確認した
  • 同名候補を自動削除せず、人が内容を確認する

まとめ

共有フォルダ整理は、いきなり移動や削除を始めるより、直下データを読み取り専用で棚卸しすると安全に進めやすくなります。この例は変更処理を含まないため、対象を小さく区切り、ログを確認してから次の作業を判断できます。

DriveFileList Pro|Google Driveのファイル一覧化GASテンプレ

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

※学習・検証用の例です。実データへ適用する前にコピー環境と少量データで確認してください。Google公式・Google公認の商品ではありません。


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

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

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

この記事のライター

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

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

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

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

    ¥2,980
    1 %獲得
    (29 円相当)
  • あとで見るURLを二重登録しない|GASで読書・動画ウォッチリストをdry-run監査

  • Google Driveのフォルダを一括作成する前に確認|GASのdry-run付き安全テンプレート

関連のおすすめ記事

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

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

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

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

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

    GoGorilla

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

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

    SmartSenior