共有フォルダの整理漏れを移動前に発見|GASで直下データをdry-run棚卸し
ツールおじ|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公認の商品ではありません。
