Googleドライブの不要ファイルをGASで自動削除

GASDriveコスト削減
Googleドライブの不要ファイルをGASで自動削除のサムネイル

みなさん、こんにちは。GASおじです。今回はGoogleドライブ内の不要ファイルを自動的に整理して、ストレージコストを抑える方法を紹介するよ。GAS(Google Apps Script)を使えば、追加の専用SaaS料金なしに、Googleアカウントの利用枠内で自動化ができる。ただし、実行回数や処理時間のquotaはあるので注意してね。

中小企業の経営者やフリーランスの皆さん、ドライブの肥大化で無駄なコストや管理工数が増えていませんか?おじさんが提案するのは「削除」ではなく、不要ファイルのリストアップとバックアップを行い、別ファイルに記録してから後で手動で判断できる仕組み。重要なのは既存データをその場で更新・削除しないこと。誤って重要ファイルを消してしまうリスクを減らすためだ。


1. 初期設定と必要な権限

GASでドライブのファイル情報を扱うには、スクリプトエディタの「サービス」から「Drive API」を有効にしよう。また、スクリプト実行時にはGoogleドライブのファイル一覧を取得できる権限が必要になる。初回実行時に許可を求められるので、必ず内容を確認してから承認してほしい。

また、トリガーを使って定期実行させたい場合は、installable trigger(時間主導型トリガーなど)を設定しておこう。これで毎日・毎週などの頻度で自動チェックが可能になる。


2. 不要ファイルの条件と検証

おじさんの経験上、以下のような条件で「不要ファイル候補」を抽出することが多い。

  • 最終更新日が90日以上前
  • ファイルサイズが1MB未満(小さすぎて中身が空かもしれない)
  • 拡張子が特定のもの(例:.tmp, .bak)など

ただし、これらはあくまで候補。自動で削除はせず、リストアップ結果を新しい日時付きスプレッドシートに書き出すだけにしている。リストを見てから人間が最終判断する運用だ。


3. バックアップとロールバック

誤操作に備え、ファイルを直接削除しない代わりに、ファイルIDや名前、最終更新日時などの情報を新規スプレッドシートに書き出している。これが「バックアップ情報」になる。もし誤って削除してしまった場合の復元手順も必須。ドライブのゴミ箱からの復元や、Googleドライブのバージョン管理機能を案内しておこう。


4. 実際のコード例

以下は、90日以上更新されていないファイルをリストアップし、結果を日時付きスプレッドシートに書き出すサンプルコードだ。

function listOldFilesToSheet() {
  // 90日前の日付を取得
  const thresholdDate = new Date();
  thresholdDate.setDate(thresholdDate.getDate() - 90);

  // 新しいスプレッドシートを作成(YYYYMMDD_HHmmss形式)
  const now = new Date();
  const timestamp = Utilities.formatDate(now, Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const spreadsheet = SpreadsheetApp.create('不要ファイルリスト_' + timestamp);
  const sheet = spreadsheet.getActiveSheet();

  // ヘッダー設定
  sheet.appendRow(['ファイル名', 'ファイルID', '更新日時', 'サイズ(Bytes)', 'MIMEタイプ']);

  // DriveAppでファイルを取得(Drive APIで拡張可能)
  let pageToken = null;
  do {
    const response = Drive.Files.list({
      q: `'me' in owners and trashed = false and modifiedTime < '${thresholdDate.toISOString()}'`,
      fields: 'nextPageToken, files(id, name, modifiedTime, size, mimeType)',
      pageToken: pageToken,
      pageSize: 1000
    });
    const files = response.files;
    if (files && files.length > 0) {
      const rows = [];
      for (const file of files) {
        // サイズが未定義のものは0にする
        const size = file.size ? Number(file.size) : 0;
        // ここで追加の条件もチェック可能(例:サイズ1MB未満で絞る)
        if (size < 1 * 1024 * 1024) {
          rows.push([
            file.name,
            file.id,
            file.modifiedTime,
            size,
            file.mimeType
          ]);
        }
      }
      if (rows.length > 0) {
        sheet.getRange(sheet.getLastRow() + 1, 1, rows.length, rows[0].length).setValues(rows);
      }
    }
    pageToken = response.nextPageToken;
  } while (pageToken);

  // 完了メッセージ
  Logger.log('不要ファイルのリストアップ完了。スプレッドシートURL: ' + spreadsheet.getUrl());
}

5. コスト削減の仮定と計算例

仮にGoogleドライブのストレージ容量が100GBあり、そのうち10GBが不要ファイルだったとしよう。Googleの料金表によると、追加100GBあたり月額約250円(2026年現在、税抜き)だ。10GB削減できれば単純計算で月25円の節約になる。

計算式は以下の通り。

節約額 = 削減容量(GB) × 追加ストレージ単価(円/GB)
       = 10 × 2.5 = 25円/月

もちろん実際は組織の使用状況やプランにより異なるが、不要ファイルを定期的にチェックし続けることで、無駄なストレージ課金の抑制につながる。


6. 個人情報の取り扱いと復元手順

このスクリプトはファイルの名前やIDを扱うため、個人情報や機密情報を含むファイルが混在している場合は特に注意が必要だ。情報の取り扱いは運用ルールを定めてから実施しよう。

誤ってファイルを削除した場合は、Googleドライブのゴミ箱から30日以内であれば復元可能だ。加えて、G Suite(Google Workspace)利用者は管理者コンソールからの復元オプションもあるので、万が一に備えて管理者権限者と連携しておくと安心だ。


7. まとめ

  • GASで不要ファイルを自動的に「検出」し、リストを日時付きスプレッドシートへ書き出す
  • 既存ファイルはその場で削除・更新しない設計により誤削除リスクを回避
  • 定期実行にはinstallable triggerを利用
  • Googleアカウントの利用枠内で追加SaaS料金なし(quota・実行上限あり)
  • コスト削減はストレージ容量の削減に比例するが、導入効果は環境に依存
  • 個人情報の取扱いと復元手順は運用ルールとして必須

この方法で、ドライブの肥大化による無駄なストレージコストを抑えつつ、安全に不要ファイルを管理できるはずだ。ぜひ試してみてほしい。


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