共有フォルダの管理をGASで効率化

GASDrive共有管理
共有フォルダの管理をGASで効率化のサムネイル

共有フォルダの管理をGASで効率化

はじめに

どうも、GASおじです。中小企業の経営者やフリーランスの皆さん、共有フォルダの管理で困っていませんか?ファイルの数が増えてくると、誰が何をアップロードしたのか、どのファイルが最新なのか追いづらくなりますよね。手動での整理は時間もかかるし、ミスも起こりがち。そこで今回はGoogle Apps Script(以下GAS)を使って、共有フォルダの管理を効率化する方法をご紹介します。

GASはGoogleアカウントの利用枠内で追加の専用SaaS料金なしで使えます。ただし、Apps Scriptのquotaや実行上限はあるのでその点はご注意を。おじさんもSaaS課金には厳しいから、なるべく追加コストなしで賢く運用したいんですよね。

共有フォルダ管理の課題とGASの役割

共有フォルダは便利だけど、以下のような課題があります。

  • ファイル数・種類が多くて全体把握が難しい
  • 個別に確認・整理するのが時間の無駄
  • 間違って重要データを上書き・削除しそうで怖い

ここでGAS登場。GASを使えば、フォルダ内のファイル情報を一括で取得し、日時付きの新しいスプレッドシートに書き出せます。既存データはそのまま残すのでリスクなし。バックアップや復元も視野に入れた設計で安心です。

初期設定と必要権限

まずはスクリプトを動かすために必要な設定と権限を押さえましょう。

  1. Googleドライブの共有フォルダIDを取得
    Googleドライブ上で共有フォルダを開き、URLの最後の部分がフォルダIDです。

  2. GASプロジェクト作成
    Googleスプレッドシートを新規作成し、「拡張機能」→「Apps Script」からプロジェクトを作ります。

  3. 必要な権限
    スクリプトがドライブ内のファイル情報にアクセスするため、スクリプト実行時に以下の権限を求められます。

  • ドライブファイルの表示・管理権限(https://www.googleapis.com/auth/drive
  1. installable triggerの設定(任意)
    定期的に実行したい場合は、Apps Scriptの「トリガー」メニューから時間主導のトリガーを設定してください。

具体的なコード例

以下は共有フォルダ内のファイル一覧を取得し、ファイル名、種類、更新日時、URLを新規作成する日時付きスプレッドシートに書き出すサンプルコードです。ファイルの削除や既存シートの上書きはせず、新しいファイルを作成するため安全です。

function exportSharedFolderFiles() {
  const folderId = '共有フォルダのIDをここに入れる'; // 共有フォルダIDをセット
  const folder = DriveApp.getFolderById(folderId);
  
  // 入力検証:フォルダが存在するかチェック
  if (!folder) {
    throw new Error('指定されたフォルダIDが無効です。');
  }
  
  // 新しいスプレッドシートを作成(日時付き)
  const timestamp = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyyMMdd_HHmmss');
  const ss = SpreadsheetApp.create(`共有フォルダファイル一覧_${timestamp}`);
  const sheet = ss.getActiveSheet();

  // ヘッダー行
  const headers = ['ファイル名', 'ファイルタイプ', '更新日時', 'URL'];
  sheet.appendRow(headers);

  // フォルダ内のファイルを取得
  const files = folder.getFiles();
  const data = [];

  while (files.hasNext()) {
    const file = files.next();
    data.push([
      file.getName(),
      file.getMimeType(),
      Utilities.formatDate(file.getLastUpdated(), Session.getScriptTimeZone(), 'yyyy/MM/dd HH:mm:ss'),
      file.getUrl()
    ]);
  }

  // batch writeでまとめて書き込み
  if (data.length > 0) {
    sheet.getRange(2, 1, data.length, data[0].length).setValues(data);
  }

  // 結果のスプレッドシートURLをログに出力(必要に応じて共有も検討)
  Logger.log(`ファイル一覧スプレッドシートを作成しました: ${ss.getUrl()}`);
}

ポイント解説

  • ファイルの削除やシートのクリアは行わず、新規ファイル作成なので既存データは無傷です。
  • 入力検証でフォルダ存在チェックをしています。
  • ファイル情報は一括で書き込むため処理効率も良いです。
  • 実行結果はログでURLを確認できます。
  • 共有設定は手動で行い、必要に応じて権限を調整してください。

バックアップとロールバックの考え方

万が一のために、スクリプトで作成したスプレッドシートは編集・削除しないでください。必要ならば別の新しいファイルを作成する形で運用しましょう。
データの復元は、作成済みのスプレッドシートから手動で元に戻すか、別途スクリプトでインポート処理を作る方法がありますが、今回は割愛します。

導入によるコスト削減の目安

例えば、共有フォルダの手動チェックに1回30分かかっていたとします。週1回実施で月4回、時給2,000円のスタッフが担当すると…

30分 × 4回 = 2時間/月
2時間 × 2,000円 = 4,000円/月

GAS導入で自動化すればこの時間が大幅削減可能。
もちろん、スクリプトの初期作成やトリガー設定に少し時間はかかりますが、月単位で見ればコスト削減に貢献できるでしょう。

ただし、Apps Scriptには実行時間の上限(通常6分/実行など)や日間クォータがありますので、大量ファイルの場合は分割処理など工夫が必要です。

個人情報の取り扱いについて

共有フォルダのファイル情報は、アクセス権限のあるユーザー間でのみ扱う前提です。スクリプトで取得する情報はファイル名やURLなどですが、個人情報が含まれる場合は取り扱いに十分注意してください。GASの権限範囲内でのみアクセス可能であり、外部送信はしない設計としてください。

まとめ

  • GASで共有フォルダ内のファイル一覧を日時付きスプレッドシートに自動出力
  • 既存データは削除・上書きせず、新規ファイル作成で安全運用
  • 入力検証とbatch writeで効率的かつ堅牢な処理
  • Googleアカウントの利用枠内で追加の専用SaaS料金なし(quota注意)
  • installable triggerで定期実行も可能

GASは上手に使えば、中小企業やフリーランスの運用負担を大きく軽減してくれます。おじさんも自分の業務に合わせてカスタマイズしているので、ぜひ皆さんも試してみてくださいね。

さらに便利なツールやテクニックはGASおじラボで500ツール使い放題 →で公開中。気になる方はチェックしてみてください!

それでは、またお会いしましょう。GASおじでした。