GASでGoogleドライブのファイル操作を自動化!基本コードから実践スクリプトまで完全解説

GASでGoogleドライブのファイル操作を自動化!基本コードから実践スクリプトまで完全解説

Googleドライブの整理や共有設定を手作業で続けると、同じ操作に毎回時間を奪われます。GASを使えば、ファイル取得、コピー、移動、削除、権限設定まで自動化できます。この記事では、DriveAppの基礎からコピペで使える必須コード、拡張子別の自動整理スクリプト、よくあるエラー対策までを順番に解説します。

目次

GASによるGoogleドライブ操作の基礎知識

GASによるGoogleドライブ操作の基礎知識

結論から言うと、GASでGoogleドライブを扱う基本は、対象をIDで特定し、DriveAppからFileやFolderオブジェクトを取得して操作する流れです。

この考え方を押さえるだけで、日次の資料整理、テンプレート複製、共有設定の付与など、手作業で数十分かかる業務を数秒から数分へ短縮しやすくなります。

まずはDriveAppの役割、IDの見つけ方、どこまで自動化できるかを理解すると、後のコードが一気に読みやすくなります。

DriveAppとは?GAS標準搭載のドライブ操作クラス

DriveAppは、GASでGoogleドライブを操作するための標準クラスです。

ファイル取得、フォルダ作成、コピー、移動、削除、ごみ箱移動、共有設定など、日常業務でよく使う処理の多くを追加ライブラリなしで実装できます。

実務では、まずDriveAppでファイルを取得し、その後にFileクラスのメソッドを呼び出す形が基本です。参考: Apps Script File クラス

ファイルID・フォルダIDの確認方法【図解】

ファイル操作で最も重要なのは、対象を正しく示すIDです。

フォルダIDは、Googleドライブでフォルダを開いたURLの末尾付近にある文字列です。

ファイルIDは、Googleドキュメントやスプレッドシートを開いたURL内の、d/ と /edit の間にある文字列を確認すると見つけやすいです。

IDの1文字違いでもエラーになるため、手入力よりコピー貼り付けを徹底してください。

GASドライブ操作でできること一覧【早見表付き】

GASでできることを先に把握すると、自分の業務に使えるか判断しやすくなります。

操作主なメソッド活用例取得getFileById請求書や報告書を指定取得一覧化getFilesフォルダ内を一括処理作成createFolder月次フォルダを自動作成複製makeCopyテンプレートから量産移動moveTo種類別に自動整理名称変更setName命名規則を統一ごみ箱移動setTrashed不要ファイルを整理共有addEditor担当者へ権限付与

この表の操作だけでも、毎日10件から100件単位で発生するドライブ作業をかなり減らせます。

【コピペOK】GASファイル操作の必須コード8選

【コピペOK】GASファイル操作の必須コード8選

ここでは、実務でよく使う8つのコードを厳選して紹介します。

どれも短いコードですが、組み合わせるとフォルダ整理や配布業務を強力に自動化できます。

ファイルをIDで取得する(getFileById)

特定ファイルを確実に操作したいなら、getFileByIdが最優先です。

ファイル名検索は重複や表記ゆれの影響を受けますが、ID指定なら1対1で対象を特定できます。

function sampleGetFile(){ var file = DriveApp.getFileById(‘ファイルID’); Logger.log(file.getName()); }

請求書テンプレートや管理台帳のように、固定ファイルを毎回使う処理で特に有効です。参考: Apps Script File クラス

フォルダ内のファイル一覧を取得する(getFiles)

フォルダ内の全ファイルを順番に処理したいときは、Folder.getFilesを使います。

戻り値はイテレータなので、while文とhasNextで1件ずつ安全に取り出すのが基本です。

function listFiles(){ var folder = DriveApp.getFolderById(‘フォルダID’); var files = folder.getFiles(); while(files.hasNext()){ var file = files.next(); Logger.log(file.getName()); } }

この形を覚えると、一括リネーム、一括移動、一括削除の土台を使い回せます。補足動画: GASでGoogleドライブからファイル情報を取得する方法

新規フォルダを作成する(createFolder)

定期業務では、日付や案件名ごとにフォルダを自動作成すると整理が一気に楽になります。

月初に 2026-04 のような名前で作る運用なら、担当者の作成漏れを防げます。

function createMonthlyFolder(){ var parent = DriveApp.getFolderById(‘親フォルダID’); var folder = parent.createFolder(‘2026-04’); Logger.log(folder.getId()); }

同名フォルダの重複を避けたい場合は、事前にgetFoldersByNameで存在確認すると安全です。

ファイルをコピーする(makeCopy)

テンプレート配布を自動化したいなら、makeCopyが最も実用的です。

議事録、申請書、見積書などを案件ごとに複製すれば、手動コピーの手間と作成漏れを減らせます。

function copyFile(){ var template = DriveApp.getFileById(‘テンプレートID’); var folder = DriveApp.getFolderById(‘保存先フォルダID’); var copied = template.makeCopy(‘案件A_見積書’, folder); Logger.log(copied.getId()); }

複製後にsetNameやaddEditorを続けて呼び出すと、配布まで一連で自動化できます。参考: Apps Script File クラス

ファイルを別フォルダに移動する(moveTo)

ドライブ整理の自動化では、moveToが中心になります。

たとえば、受信フォルダに集まったPDFだけを保管フォルダへ移す処理を毎日動かせば、検索性が大きく向上します。

function moveFile(){ var file = DriveApp.getFileById(‘ファイルID’); var dest = DriveApp.getFolderById(‘移動先フォルダID’); file.moveTo(dest); }

移動先の権限や共有ドライブの設定によって失敗する場合があるため、事前確認は必須です。

ファイル名を変更する(setName)

命名規則を揃えるだけでも、後から探す時間を大きく減らせます。

日付、案件名、版数を含めた名前に統一すると、ファイル検索や並び替えがしやすくなります。

function renameFile(){ var file = DriveApp.getFileById(‘ファイルID’); file.setName(‘2026-03_営業報告_v2’); }

一括変更では元の名前をログに残しておくと、誤変更が起きても復旧しやすくなります。

ファイルを削除する(setTrashed)

完全削除ではなく、ごみ箱へ移すsetTrashedを使うのが安全です。

不要ファイルを即時消去すると復旧が難しくなりますが、ごみ箱移動なら確認後に戻せます。

function trashFile(){ var file = DriveApp.getFileById(‘ファイルID’); file.setTrashed(true); }

自動削除処理は、まず対象一覧をスプレッドシートへ出して確認し、その後に実行する二段階運用がおすすめです。

ファイルの共有権限を設定する(addEditor/addViewer)

共有作業の手間を減らしたいなら、権限付与もGASで自動化できます。

編集者を追加するaddEditorと、閲覧者を追加するaddViewerを使い分けることで、誤編集の防止と共有の速さを両立できます。

function shareFile(){ var file = DriveApp.getFileById(‘ファイルID’); file.addEditor(‘[email protected]’); file.addViewer(‘[email protected]’); }

ただし、組織設定や共有ドライブの制約で権限変更が拒否されることがあります。参考: Apps Script File クラス

【実践】GASでフォルダ自動整理スクリプトを作成する

【実践】GASでフォルダ自動整理スクリプトを作成する

ここからは、実務で使いやすい拡張子別の自動整理スクリプトを作ります。

考え方は単純で、対象フォルダ内のファイルを取得し、種類ごとに分岐し、対応する子フォルダへ移動するだけです。

完成イメージ:拡張子別に自動振り分けする仕組み

完成後は、受信フォルダに置かれたファイルが、PDF、画像、スプレッドシート、その他の4分類に自動で振り分けられます。

毎日20件から50件のファイルが流入する部署では、探す時間と移動ミスをまとめて減らせるのが大きな利点です。

PDF → PDF フォルダPNG、JPEG → 画像 フォルダGoogleスプレッドシート → スプレッドシート フォルダその他 → その他 フォルダ

ステップ1:対象フォルダを指定する

最初にやることは、整理対象の親フォルダをIDで指定することです。

ここが間違うと、意図しないフォルダの中身を動かしてしまうため、テスト用フォルダで確認してから本番へ切り替えてください。

var sourceFolder = DriveApp.getFolderById(‘対象フォルダID’);

ステップ2:ファイルをループ処理で取得する

次に、対象フォルダ内のファイルを1件ずつ取り出します。

大量ファイルでも基本構造は同じで、hasNextとnextを使って順番に処理を進めます。

var files = sourceFolder.getFiles(); while(files.hasNext()){ var file = files.next(); }

ステップ3:MIMEタイプで条件分岐する

拡張子で分けるより、MIMEタイプで判定するほうがGASでは安定します。

特にGoogleスプレッドシートやGoogleドキュメントは通常の拡張子ではなく、専用のMIMEタイプで管理されるためです。

var mime = file.getMimeType(); if(mime === ‘application/pdf’){ folderName = ‘PDF’; } else if(mime === ‘image/png’ || mime === ‘image/jpeg’){ folderName = ‘画像’; } else if(mime === ‘application/vnd.google-apps.spreadsheet’){ folderName = ‘スプレッドシート’; } else { folderName = ‘その他’; }

ステップ4:ファイルを移動して処理完了

最後に、分岐で決めたフォルダへmoveToで移動すれば処理完了です。

子フォルダが未作成ならcreateFolderで自動生成すると、初回実行から止まらずに動きます。

var target = getOrCreateFolder_(sourceFolder, folderName); file.moveTo(target);

完成版コード全文【コピペ用】

以下のコードをそのまま貼り付け、対象フォルダIDだけ差し替えれば動作確認しやすいです。

function autoOrganizeDrive(){ var sourceFolder = DriveApp.getFolderById(‘対象フォルダID’); var files = sourceFolder.getFiles(); while(files.hasNext()){ var file = files.next(); var mime = file.getMimeType(); var folderName = ‘その他’; if(mime === ‘application/pdf’){ folderName = ‘PDF’; } else if(mime === ‘image/png’ || mime === ‘image/jpeg’){ folderName = ‘画像’; } else if(mime === ‘application/vnd.google-apps.spreadsheet’){ folderName = ‘スプレッドシート’; } var target = getOrCreateFolder_(sourceFolder, folderName); file.moveTo(target); } } function getOrCreateFolder_(parent, name){ var folders = parent.getFoldersByName(name); return folders.hasNext() ? folders.next() : parent.createFolder(name); }

まずは5件から10件のテストデータで試し、意図したフォルダへ移ることを確認してから本番投入してください。

トリガー設定で毎日自動実行する方法

定時実行したい場合は、時間主導型トリガーを設定するのが定番です。

毎日深夜1時や朝8時など、業務の邪魔にならない時間に動かせば、出社時には整理済みの状態を作れます。

スクリプトエディタを開く左側のトリガーを開く関数に autoOrganizeDrive を選ぶイベントのソースを時間主導型にする日付ベースで毎日を選ぶ

実行ログを最初の数日確認し、想定外の移動がないかを見ると運用が安定します。

GASドライブ操作でよくあるエラーと解決法5選

GASドライブ操作でよくあるエラーと解決法5選

GASのドライブ操作は便利ですが、エラー原因の多くはID、権限、実行時間の3点に集約されます。

ここを理解しておくと、止まったスクリプトを短時間で直せるようになります。

「ファイルが見つかりません」エラーの原因と対処法

このエラーは、誤ったIDを指定したときに最もよく発生します。

ほかにも、対象ファイルが削除済み、共有解除済み、別アカウント所有で閲覧権限がない場合にも起こります。

対処法は、URLからIDを再取得する、手動で開けるか確認する、テスト時はLogger.logでIDを出力する、の3点です。

「実行時間の上限を超えました」エラーの回避策

大量ファイルを一度に処理すると、実行時間の上限に達しやすくなります。

回避の基本は、1回で処理する件数を50件や100件などに区切り、続きは次回トリガーへ回す設計です。

PropertiesServiceに最終処理位置を保存し、途中再開できる形にすると、数千件規模でも安定しやすくなります。

「権限がありません」エラーの解決手順

権限エラーは、初回承認不足か、対象ファイルへのアクセス権不足が原因です。

まずスクリプトを再実行して認可画面を完了し、その後に対象ファイルをブラウザで開けるか確認してください。

共有設定の変更は組織ポリシーで制限される場合があるため、管理者設定も確認が必要です。参考: Apps Script File クラス

「無効な引数」エラーが出るときの確認ポイント

無効な引数エラーは、型や値が想定と違うときに発生します。

典型例は、空文字のID、Folderの代わりにundefinedを渡す、addEditorに誤ったメール形式を入れる、の3パターンです。

変数の中身を事前にLogger.logで確認し、nullや空文字を早めに弾くだけでも再発防止になります。

共有ドライブで発生しやすいエラーと対策

共有ドライブでは、個人ドライブと権限ルールが異なるため、同じコードでも失敗することがあります。

特に移動や共有権限の付与は、組織設定や対象ドライブの権限に強く依存します。なお、共有ドライブ内のファイルは個人ではなく組織/チームに属するため、共有ドライブでは通常の「所有者変更」という考え方は当てはまりません。

対策としては、まず小さなテストフォルダで検証し、必要なら管理者へ権限要件を確認してから本番化することです。

GASファイル操作の制限事項と回避テクニック

GASファイル操作の制限事項と回避テクニック

自動化を安定運用するには、便利なコードを書くこと以上に、制限を前提に設計することが重要です。

ここでは、実行時間、API呼び出し、ファイル件数の3つの観点から、実務向けの回避策を整理します。

実行時間の制限(6分/30分ルール)と分割処理

GASは無制限に動くわけではないため、長時間処理を1回で終わらせようとしない設計が重要です。

現在の公式ドキュメントでは、通常のスクリプト実行時間はコンシューマー/Google Workspace ともに1実行あたり6分です。長時間処理は件数分割と再開処理を基本にしてください。

たとえば1000件を一括処理するより、100件ずつ10回に分けたほうが失敗時の再実行も簡単です。

API呼び出し回数の上限と効率的なコード設計

DriveAppの呼び出し回数が増えるほど、速度低下と上限到達のリスクが高まります。

効率化の基本は、同じID取得を繰り返さない、ループ内で不要な検索をしない、判定用の値を変数に入れて再利用することです。

たとえば移動先フォルダを毎回検索するのではなく、一度見つけたFolderオブジェクトを保持するだけでも処理は軽くなります。

大量ファイル処理時のベストプラクティス

大量処理では、速さより安全性を優先したほうが結果的に運用コストが下がります。

最初は5件から10件でテストする処理対象と結果をログへ残す削除系はごみ箱移動から始める途中再開できるよう状態を保存する本番用と検証用のフォルダを分ける

この運用を徹底すると、数百件から数千件のファイル整理でも事故をかなり減らせます。

まとめ:GASでGoogleドライブ操作をマスターして業務を自動化しよう

まとめ:GASでGoogleドライブ操作をマスターして業務を自動化しよう

GASのGoogleドライブ操作は、難しそうに見えても基本はとてもシンプルです。

IDで対象を取得し、DriveAppのメソッドで処理し、エラーと制限を前提に設計するだけで、日々の単純作業を大きく減らせます。

まずは getFileById と getFiles を覚える次に createFolder、makeCopy、moveTo を組み合わせる削除系は setTrashed で安全に始める共有設定は権限と組織ポリシーを確認する本番前に少量テストとトリガー運用を行う

最初の一歩としては、今日使っている受信フォルダ1つを対象に、自動整理スクリプトを試すのが最も効果的です。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次