受領フォルダに届いた請求書や領収書のPDFを開き、ファイル名を『日付_取引先_金額』の形式に手作業で書き換えている場合、件数が増えるほど書き換え漏れや表記ゆれが積み重なります。
Google Apps Scriptにはファイル名を一括で書き換える機能があります。
ただしPDFの中身を読み取って日付や取引先を自動で判定する機能は備わっていないため、リネームの元になる情報は別途シートに用意しておくことが前提です。
この記事では、シートに入力した命名情報をもとにドライブ内のファイルを一括リネームし、変更前後のファイル名をログとして残す仕組みまで整理しています。
完成イメージ
完成するのは、受領フォルダに保存された請求書・領収書のファイルを、シートに入力した命名情報どおりにまとめてリネームする仕組みです。
対象ファイルは元のファイル名で検索して特定するため、あらかじめ「命名リスト」シートのA列にリネーム対象ファイルの現在のファイル名を入力しておく必要があります。
リネームに必要な日付・取引先・金額といった情報は、業務によってすでにどこかに存在している場合と、そのつど手入力になる場合があります。
| 命名情報の入力元 | 向いている場面 |
|---|---|
| 専用の入力シートに都度手入力 | 件数が少なく、担当者がその場で日付・取引先を確認できる場合 |
| 既存の請求書台帳(Excel等の集計シート) | 経理処理と同時に台帳へ記録している場合。二重入力を避けられる |
| 会計システムから出力したCSVを転記 | 会計システム側に取引データがすでに蓄積されている場合 |
シートの命名情報は、対象ファイルが1つに絞り込める内容であることが前提です。
同じファイル名のファイルが受領フォルダ内に複数存在すると、意図しない方のファイルがリネームされる可能性があるため、フォルダ内でファイル名が重複しないよう運用しておく必要があります。
手順
シートの準備からコードの実行まで、3つのステップで完成する流れです。
Step1. シートとフォルダを準備する
スプレッドシートに「命名リスト」と「リネームログ」という名前のシートを2つ作成します。
「命名リスト」シートの1行目はヘッダー行とし、A列は元のファイル名、B列は日付、C列は取引先、D列は金額の入力欄です。
B列の日付は、列全体をあらかじめ「書式なしテキスト」に設定してから 2026-07-13 のように入力してください。
セルが日付型のままだと、スクリプトが読み取った値が長い日時表記に変わり、ファイル名が崩れます。
2行目以降は、リネーム対象のファイル1件につき1行で命名情報を入力していく流れです。
「リネームログ」シートには、実行日時・元のファイル名・新しいファイル名・結果を記録する列を用意しておきます。
リネーム対象のファイルが入っている受領フォルダのURLからフォルダIDも控えておきます。
初めてGoogle Apps Scriptで自動化を組む場合は、基本の始め方を先に確認しておくと安心です。

Step2. コードを貼り付ける(コード全文)
script.google.comを開き、「新しいプロジェクト」を選択します。
表示されているコードをすべて消し、次のコードを貼り付ける流れです。
function renameFilesByLedger() {
const folderId = 'ここに対象フォルダのIDを入力'; // ★ここを変える: リネーム対象ファイルが入っている受領フォルダのID
const ledgerSheetName = '命名リスト';
const logSheetName = 'リネームログ';
const ss = SpreadsheetApp.getActiveSpreadsheet();
const ledgerSheet = ss.getSheetByName(ledgerSheetName);
const logSheet = ss.getSheetByName(logSheetName);
const folder = DriveApp.getFolderById(folderId);
const values = ledgerSheet.getDataRange().getValues();
for (let i = 1; i < values.length; i++) {
renameOneFile(values[i], folder, logSheet);
}
}
function renameOneFile(row, folder, logSheet) {
const oldFileName = row[0];
const dateText = row[1];
const vendorName = row[2];
const amount = row[3];
if (oldFileName === '') {
return;
}
const files = folder.getFilesByName(oldFileName);
if (!files.hasNext()) {
logSheet.appendRow([new Date(), oldFileName, '', '対象ファイルが見つかりません']);
return;
}
const file = files.next();
const extension = oldFileName.indexOf('.') === -1 ? '' : oldFileName.split('.').pop();
const newFileName = extension === ''
? dateText + '_' + vendorName + '_' + amount
: dateText + '_' + vendorName + '_' + amount + '.' + extension;
file.setName(newFileName);
logSheet.appendRow([new Date(), oldFileName, newFileName, '完了']);
} folderIdにはStep1で控えたフォルダIDを入力します。
renameFilesByLedgerが「命名リスト」シートを1行ずつ読み込み、元のファイル名でフォルダ内を検索したうえで、日付・取引先・金額を組み合わせた新しい名前にリネームしていく仕組みです。
拡張子の有無はファイル名にドットが含まれるかどうかで判定しているため、拡張子のないファイルも問題なくリネームされます。
Step3. 実行して確認する
「命名リスト」シートに1件だけ入力した状態でrenameFilesByLedgerを実行し、受領フォルダ内のファイル名が想定どおりに変わっているかを確認します。
初回実行時には、Googleアカウントへのアクセス許可を求める画面が表示されるため、内容の確認と許可が必要です。
問題がなければ、「命名リスト」シートに残りの行をまとめて入力し、再度実行します。
添付ファイルの保存先を整理してからリネームしたい場合は、メールの添付ファイルをドライブへ自動保存する仕組みも合わせて確認しておくと手戻りが少なくなります。

元の名前に戻せるログを残す
このコードでは、リネームを実行するたびに「リネームログ」シートへ実行日時・元のファイル名・新しいファイル名・結果を1行ずつ記録しています。
ログに元のファイル名が残っていれば、命名情報の入力ミスに気づいたときも慌てず対応できます。
対象のファイルを検索し、file.setName(oldFileName)のように書き換え直すだけで元の状態に戻せる仕組みです。
ログを残さずにリネームを実行すると、間違いに気づいた時点で元のファイル名がどこにも残っておらず、取引先への問い合わせが必要になる場合もあります。
一度リネームが完了したファイルは、「命名リスト」シートに残っている元のファイル名では検索できなくなります。
そのため同じシートのまま誤って再実行しても二重にリネームされることはなく、「リネームログ」に対象ファイルが見つからない旨が記録されるだけです。
整理の対象をリネームだけでなくフォルダ分けまで広げたい場合は、ドライブ内のファイルを種類別・年月別に自動整理する仕組みも参考になる進め方です。

Google Apps Scriptでの請求書・領収書のファイル名リネームについて相談してみませんか?
「取引先ごとに命名ルールを統一したい」「リネームと合わせて台帳への記録も自動化したい」「社内にGoogle Apps Scriptを設計できる人材がいない」
少しでもお心当たりがあれば、お気軽にご相談ください。
現在、Google Apps Scriptを使った業務自動化のお悩みをお伺いする 無料の個別相談 を実施中です。
よくある質問
Q. 命名リストシートの入力を間違えた場合はどうすればいいですか?
シートの内容を修正してから再度スクリプトを実行すれば、正しい命名情報でリネームし直せます。
ただし一度目のリネームですでにファイル名が変わっているため、「元のファイル名」欄を新しいファイル名に更新したうえで実行し直す作業が必要です。
Q. 拡張子がないファイルもリネームできますか?
リネームできます。
コード内でファイル名にドットが含まれるかどうかを判定し、含まれない場合は拡張子を付けずに新しい名前を組み立てる設計です。
拡張子のないファイルもそのままリネームされます。
Q. 共有ドライブ内のファイルもリネームできますか?
リネームできます。
folderIdに共有ドライブ内のフォルダのIDを指定すれば同じコードで動作しますが、実行するアカウントにその共有ドライブへの編集権限が必要です。
Q. 大量のファイルを一度にリネームしても大丈夫ですか?
件数が多いと1回の実行で時間の上限に達し、途中で処理が止まる可能性があります。
「命名リスト」シートを分割し、複数回に分けて実行する運用にすると安全です。