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を使いこなしたいなら、ぜひメンバーシップもチェックしてみてください。おじさんが厳選した実用ツールが盛りだくさんです!