Gmailの請求書PDFを自動保存&リネームする方法|GASで経理作業を完全自動化

Gmailの請求書PDFを自動でGoogleドライブに保存し、日付と送信元でリネームする仕組みを説明するイラスト。Gmail・PDF・Googleドライブのアイコンが矢印でつながっている。
目次

面倒な「請求書整理」を自動化して時間を取り戻す

経理業務や副業の収支管理で、毎月のように届く請求書メールの整理に時間を取られていませんか?

たとえば以下のような作業です:

  • Gmailから請求書のPDFを探してダウンロード
  • ファイル名を「2025-01_freee請求書.pdf」などに手動で変更
  • Googleドライブのフォルダに手作業で整理

このような繰り返し作業は単純ですが、毎月の積み重ねで膨大な時間を奪います。
しかし、Google Apps Script(以下GAS)を活用すれば、
Gmail → Drive保存 → ファイル名変更までを完全に自動化できます。

この記事では、実際に使えるGASコード例を交えながら、
「メールに届いた請求書PDFを自動で保存し、日付+送信元で命名して整理する仕組み」を構築する方法を紹介します。


毎月繰り返す“請求書地獄”の非効率

請求書処理でありがちな問題

請求書の処理に関して、多くの個人事業主や経理担当者が抱える課題は以下の通りです。

よくある課題内容
ダウンロード忘れGmailに埋もれて未保存の請求書が発生
ファイル名がバラバラ「invoice.pdf」「請求書.pdf」など統一されていない
フォルダが混乱手動で整理するため月ごと・業者ごとにズレが生じる
検索しにくいファイル名に規則性がなく検索性が悪い

これらの小さな非効率が積み重なると、
**「あの請求書どこだっけ?」**という時間浪費が常態化します。

特にフリーランスや中小企業では、
請求書整理は経理代行を依頼するほどのコストをかけづらいため、
“GASで自動化する”ことが最も費用対効果の高い解決策になります。


結論:GASで請求書PDFを自動保存&リネームできる

Googleが提供するスクリプトサービス「Google Apps Script(GAS)」を使えば、
Gmailで特定の条件に一致するメールを自動検索し、添付PDFをDriveへ保存し、ファイル名を自動で整えることが可能です。

仕組みとしては次の通りです。

① Gmailの受信トレイから「請求書」という件名のメールを検索
② 添付ファイル(PDF)を取得
③ Googleドライブの指定フォルダに保存
④ 保存時に「送信元+日付」で自動リネーム

この4つの手順をGASで定義すれば、
一度設定するだけで毎月の請求書整理が自動で完結します。


自動化がもたらす3つの効果

1. 毎月の請求処理時間を90%以上削減

これまで1件ずつダウンロード&リネームしていた作業を、
1クリックまたは自動スケジュール実行で完結。

2. 請求書の紛失リスクをゼロに

すべての請求書PDFがGoogleドライブ上に自動保存されるため、
「見逃し」や「削除」のリスクが消えます。

3. 経理の透明性と再現性が高まる

日付や送信元で命名されたファイルが自動整列することで、
月次の経費処理・監査対応が容易になります。


仕組みを支える技術:Google Apps Scriptとは

GASの基本

Google Apps Script(GAS)は、
Gmail・Drive・スプレッドシートなどGoogleサービスを自動操作できるスクリプト言語です。

JavaScriptベースで動作し、
初心者でも少しのコピペで自動化処理を実現できます。

メリット

  • Googleアカウントだけで無料で利用可能
  • クラウド上で実行されるため、パソコンを閉じていても動く
  • GmailやDriveなどGoogleサービスとの連携が簡単

自動化の流れを理解しよう

まず、GASでどんな流れで処理が行われるかを整理します。

Step1:Gmailの特定メールを検索
Step2:添付PDFを取得
Step3:Googleドライブに保存
Step4:ファイル名を整形(自動リネーム)
Step5:定期実行トリガーを設定

これが1回のスクリプト実行で完結します。

次のセクションでは、この流れを実際のコード付きで解説します。


Gmailの条件検索を設定する

まずはGASで処理対象となるメールを特定します。

以下のように検索条件を設定できます。

// Gmailから「請求書」を含む件名の未読メールを取得
var threads = GmailApp.search('subject:請求書 is:unread');

この1行で、
「件名に『請求書』が含まれ、未読のメール」がすべて対象になります。

さらに、送信元や日付を指定したい場合は以下のように拡張できます。

// 例:freeeからの請求書メールのみ対象
var threads = GmailApp.search('from:(no-reply@freee.co.jp) subject:請求書');

添付ファイルの取得と保存

次に、取得したメールスレッドの中からPDFを抽出してGoogleドライブに保存します。

// 保存先フォルダを指定
var folder = DriveApp.getFolderById('【ここにDriveフォルダIDを入れる】');

// メールごとにループ処理
for (var i = 0; i < threads.length; i++) {
  var messages = threads[i].getMessages();
  for (var j = 0; j < messages.length; j++) {
    var attachments = messages[j].getAttachments();
    for (var k = 0; k < attachments.length; k++) {
      var file = attachments[k];
      if (file.getContentType().match('pdf')) {
        folder.createFile(file);
      }
    }
  }
}

これで、対象メールの添付PDFが指定フォルダに保存されます。


自動リネームで「誰から・いつの請求書」かわかる形に

ここが自動化の肝です。
保存時にファイル名を「送信元+日付+請求書」という形に整えます。

var sender = messages[j].getFrom().replace(/<|>|"/g, '');
var date = Utilities.formatDate(messages[j].getDate(), 'Asia/Tokyo', 'yyyyMMdd');
var newFileName = date + '_' + sender + '_請求書.pdf';
folder.createFile(file.getBlob()).setName(newFileName);

これで、
たとえば「20250331_freee_請求書.pdf」のように統一的なファイル名で保存されます。


処理を自動で毎月実行する設定

GASには「トリガー」という自動実行機能があります。

  1. スクリプトエディタ画面で「時計アイコン(トリガー)」をクリック
  2. 新しいトリガーを追加
  3. 「関数」:メイン関数名(例:saveInvoices)
  4. 「イベントの種類」:時間主導型 → 毎月・毎週など選択

これで、毎月末にスクリプトを自動実行し、請求書整理が完全自動化されます。

実務で使える完成版スクリプト(コピーOK)

以下のスクリプトをGASエディタに貼り付ければ、
Gmail内の請求書PDFをGoogleドライブに自動保存&リネームできます。

function saveInvoices() {
  // 保存先フォルダID(Google DriveのURLから取得)
  var folder = DriveApp.getFolderById('【フォルダIDをここに記入】');

  // 検索条件:件名に「請求書」を含むメールを取得
  var threads = GmailApp.search('subject:請求書 has:attachment');

  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    for (var j = 0; j < messages.length; j++) {
      var attachments = messages[j].getAttachments();
      for (var k = 0; k < attachments.length; k++) {
        var file = attachments[k];
        if (file.getContentType().match('pdf')) {
          var sender = messages[j].getFrom().replace(/<|>|"/g, '');
          var date = Utilities.formatDate(messages[j].getDate(), 'Asia/Tokyo', 'yyyyMMdd');
          var newFileName = date + '_' + sender + '_請求書.pdf';
          folder.createFile(file.getBlob()).setName(newFileName);
        }
      }
    }
  }
}

これをそのまま実行すれば、
件名に「請求書」を含むメールからPDFを抽出し、Driveに整理してくれます。


よくあるトラブルと解決方法

1. 「Exception: Access denied」と出る場合

➡ スクリプト実行時にGoogleアカウントのアクセス許可が必要です。
初回実行時に出るダイアログで「権限を承認」を選択してください。

2. PDFが保存されない場合

➡ メール本文に画像ファイルしか添付されていない可能性があります。
検索条件を "subject:請求書 has:attachment filename:pdf" に変更してPDF限定にしましょう。

3. 同名ファイルが上書きされる場合

➡ ファイル名にタイムスタンプ(時刻)を追加して区別できます。

var timestamp = Utilities.formatDate(new Date(), 'Asia/Tokyo', 'HHmmss');
var newFileName = date + '_' + sender + '_' + timestamp + '_請求書.pdf';

応用①:送信元ごとに自動フォルダ分け

送信元企業別にフォルダを分けて保存したい場合は、
送信元ドメインごとにサブフォルダを自動作成する仕組みを追加します。

var domain = sender.split('@')[1].split('>')[0];
var subFolder;
var subFolders = folder.getFoldersByName(domain);
if (subFolders.hasNext()) {
  subFolder = subFolders.next();
} else {
  subFolder = folder.createFolder(domain);
}
subFolder.createFile(file.getBlob()).setName(newFileName);

これで、

  • freee.co.jp
  • moneyforward.jp
  • yayoi.jp

といった企業別フォルダが自動的に整理されます。


応用②:スプレッドシートと連携して台帳管理

Driveに保存した請求書をスプレッドシートで台帳管理することも可能です。

以下のように、保存時に記録を追加します。

var sheet = SpreadsheetApp.openById('【スプレッドシートID】').getSheetByName('請求書ログ');
sheet.appendRow([date, sender, newFileName, file.getSize(), new Date()]);

結果的に、次のような請求書台帳が自動で更新されます。

日付送信元ファイル名サイズ登録日時
2025/03/31freee20250331_freee_請求書.pdf210KB2025/04/01 00:03

このログを使えば、税務監査や経理報告でも安心して提出できます。


応用③:請求書をChatGPTに要約させる

さらにAIと連携すれば、請求書の内容を自動で要約・抽出できます。
GASからChatGPT APIを呼び出すことで、請求金額や取引先名を整理することも可能です。

たとえば、請求書のテキストをChatGPTに送信して次のような出力を得ます:

・取引先名:株式会社A社  
・請求金額:¥123,000  
・支払期日:4月30日  
・発行日:3月31日

この情報をスプレッドシートに転記すれば、経理入力も半自動化できます。


GASによる請求書整理の実務的メリット

項目従来(手動)自動化(GAS)
処理時間1件あたり3〜5分1分未満(自動)
ファイル名の統一手動で命名自動フォーマット
保存ミス発生しやすい自動保存でゼロ
フォルダ構成不統一一貫した構造
検索性低い日付+送信元で検索容易

特に会計ソフト(freee・マネーフォワードなど)を使う場合、
このファイル命名ルールを維持しておくと、証憑管理・AI OCR連携が圧倒的にスムーズになります。


セキュリティと運用上の注意点

GASによる自動化は便利ですが、情報管理のルール化も重要です。

  • 共有ドライブでは権限を限定
    → 請求書フォルダを「閲覧のみ」に制限し、社外共有を避ける。
  • APIキーやフォルダIDをスクリプト内でハードコードしない
    → プロパティサービス(PropertiesService)を利用して安全に管理。
  • ログの定期確認
    → スプレッドシートやメール通知で、処理エラーを検知できるように設定。

今すぐ始められる実践ステップ

✅ ステップ1:Googleドライブに「請求書」フォルダを作成

URLの /folders/ 以降がフォルダIDです。

✅ ステップ2:Googleスプレッドシートを用意(任意)

請求書の記録用に「請求書ログ」シートを作成。

✅ ステップ3:Google Apps Scriptを新規作成

スプレッドシートまたは直接 https://script.google.com/ にアクセス。

✅ ステップ4:スクリプトを貼り付けて保存

saveInvoices() を関数名に設定。

✅ ステップ5:初回実行でアクセス承認

「このアプリはGoogleで確認されていません」と出た場合でも、
自分のアカウントなら「詳細 → 安全ではないページに移動」をクリック。

✅ ステップ6:トリガー設定で毎月自動化

月1回または毎週自動実行に設定すれば、請求書整理は完全自動化


実践例:会計事務所での運用モデル

税理士・会計事務所では、クライアントごとの請求書を
Gmailから自動的に吸い上げ、フォルダごとに保存することで業務を効率化できます。

  • クライアントごとにメールフィルタを作成
  • GASで企業別サブフォルダを自動作成
  • 会計ソフトへ証憑リンクを貼り付け

このように、月次処理・証憑管理・監査対応を同時にカバーできます。


将来的な拡張:GAS × AI × OCRの自動経理化

GASを基盤として、以下のような自動化も拡張可能です。

機能使用技術目的
OCR認識Google Cloud Vision APIPDF内の文字抽出
AI分類ChatGPT API支出項目・経費種別の自動タグ付け
経理連携freee API / MoneyForward API会計ソフトに自動登録

このように「請求書保存」から「仕訳登録」まで一気通貫で自動化することで、
バックオフィス業務の時間を大幅に短縮できます。


まとめ:GASが“個人でもできる経理DX”の第一歩

請求書整理の自動化は、AI時代の基本インフラです。

GASを使えば、

  • 無料で
  • 自分だけのルールで
  • 安全にクラウド化

が実現できます。

もう「請求書のダウンロードで時間を取られる時代」ではありません。
GASを使った請求書の自動保存・リネーム化は、
あなたの業務を根本から効率化する最もシンプルな一歩です。

目次