Googleドライブのファイル整理をGASで自動化しよう

GASGoogleドライブ自動化
Googleドライブのファイル整理をGASで自動化しようのサムネイル

お疲れ様です、GASおじです。中小企業の経営者やフリーランスの皆さん、Googleドライブのファイル管理でこんな悩みありませんか?

  • フォルダが散らかって探すのに時間がかかる
  • 誤ってファイルを削除しそうで怖い
  • 複数人で共有していると整理ルールがバラバラ

そんなファイル整理の手間をGoogle Apps Script(以下GAS)で自動化すれば効率アップ間違いなし。ただし、GASはGoogleアカウントの利用枠内で追加の専用SaaS料金なしで活用できる一方、Quotaや実行時間の上限があります。そこで今回は、

  • 既存データを消さずに安全に整理
  • 入力チェックやバックアップも組み込む
  • 結果は新しい日時付きのシートやファイルへ出力

というポイントを押さえたスクリプト例を紹介します。

初期設定と必要な権限

まずGASを使うにはGoogleドライブとスプレッドシートの操作権限が必要です。スクリプトの初回実行時に認可画面が出るので、「Googleドライブのファイル管理」と「スプレッドシートの編集」へのアクセスを許可してください。

また、定期的に自動実行したい場合はinstallable trigger(時間主導型トリガー)を設定します。GASエディタの「時計マーク」メニューから「トリガーを追加」し、「時間主導型」で1日1回や1時間毎など、適切な頻度を選びましょう。

個人情報の取扱いには十分注意し、スクリプトは自社や自分のGoogleアカウント内で限定して利用してください。

GASで安全にファイル整理を自動化するポイント

ファイルの移動や削除は操作ミスで大事なデータを失うリスクがあります。そこで、

  • 既存ファイルは操作せず、新規ファイルや日時付きのシートに結果を書き出す
  • 入力(フォルダIDや整理ルール)の検証を行う
  • バックアップ用にコピーを作るか、元データはそのまま保持する

という方法がおすすめです。これにより、誤操作によるファイル消失リスクを避けられます。

具体的なGASコード例:フォルダ内ファイル一覧を日時付きシートに出力

以下のサンプルは、指定したGoogleドライブのフォルダ内にあるファイル一覧を取得し、ファイル名や作成日時などの情報を新規スプレッドシートの新しいシートに日時を付けて出力するものです。既存ファイルは一切操作しません。

function exportFolderFileList() {
  // --- 入力パラメータ(整理対象フォルダID) ---
  const folderId = 'YOUR_FOLDER_ID_HERE';  // ここに対象フォルダのIDをセット

  // 入力チェック
  if (!folderId || typeof folderId !== 'string') {
    throw new Error('フォルダIDが正しく設定されていません。');
  }

  // 対象フォルダの取得(存在チェック含む)
  const folder = DriveApp.getFolderById(folderId);
  if (!folder) {
    throw new Error('指定したフォルダが存在しません。');
  }

  // バックアップ用にスプレッドシートのコピーを作成(任意)
  // 今回は新規スプレッドシートを作成して出力するため省略

  // 新規スプレッドシート作成
  const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const ssName = `ファイル一覧_${timestamp}`;
  const ss = SpreadsheetApp.create(ssName);
  const sheet = ss.getActiveSheet();
  sheet.setName(timestamp);

  // ヘッダー行を設定
  const headers = ['ファイル名', 'ファイルID', '作成日時', '更新日時', 'ファイルサイズ(バイト)', 'URL'];
  sheet.appendRow(headers);

  // フォルダ内のファイルを取得
  const files = folder.getFiles();
  const data = [];
  while (files.hasNext()) {
    const file = files.next();
    data.push([
      file.getName(),
      file.getId(),
      Utilities.formatDate(file.getDateCreated(), Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm:ss'),
      Utilities.formatDate(file.getLastUpdated(), Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm:ss'),
      file.getSize(),
      file.getUrl()
    ]);
  }

  // バッチ書き込み
  if (data.length > 0) {
    sheet.getRange(2, 1, data.length, headers.length).setValues(data);
  }

  Logger.log(`ファイル一覧を新規スプレッドシートに出力しました: ${ss.getUrl()}`);
}

ポイント解説

  • 入力検証でフォルダIDの有無と正当性をチェック
  • 既存データは編集・削除せず、新規スプレッドシートを作成してファイル一覧を出力
  • batch writeで複数行をまとめて高速書き込み
  • ファイルの重要な情報を一覧化し、後から手動で整理ルールを決める材料にできる
  • 実行結果はスプレッドシートのURLがログに出るので管理しやすい

コスト削減効果(仮定)

仮に手作業でファイル整理に1日30分かかっていたとします。時給2,000円の人員で月20日作業すると、

30分 × 20日 × 2,000円 = 20,000円/月

GASで自動化し、毎日数分の実行で済むと仮定すると大幅な時間短縮が可能です。実際にはGoogleアカウントの利用枠内で動作し、追加の専用SaaS料金は発生しません。Quotaの上限はありますが、ファイル管理程度なら十分余裕があります。

復元手順・トラブル対策

  • 元データは削除・変更していないため、元のGoogleドライブファイルはそのまま残ります。
  • 万が一スクリプトが想定外の動作をした場合は、新規作成したスプレッドシートやファイルのみを削除すればOK。
  • 定期的にスプレッドシートのバックアップをGoogleドライブ外へエクスポートする運用も検討してください。
  • トリガーの停止はGASエディタのトリガーメニューからいつでも可能です。

今回紹介した方法はほんの一例。GASならあなたの業務に合わせて柔軟にカスタマイズ可能です。ファイル名のルールチェックや、特定拡張子だけ抽出するといった機能も追加できますよ。

業務効率化を目指しつつ、無理なく安全に自動化を始めてみてくださいね。


GASおじラボで500ツール使い放題 →
GASを使いこなしたいなら、ぜひメンバーシップもチェックしてみてください。おじさんが厳選した実用ツールが盛りだくさんです!