コラム

2026年3月12日

Coopelでfreee会計への請求書アップロードを自動化してみた

私はクラウド型RPAサービス「Coopel」のカスタマーサポート担当です。
今回は、従来は手動で行っていた「会計ソフトに請求書をアップロードする作業」をCoopelを用いて自動化しました。この自動化により、作業時間の短縮だけでなく、人為的ミスの削減も期待できます。
本記事では構築した際の方法や手順について詳しくご紹介します。



目次

  1. 請求書アップロード作業の全体像
  2. Coopelシナリオ全体図
  3. アクションの詳細な設定
    1. 手順1.1か月分の請求書メールを検索して取得する設定
    2. 手順2.取得したメールに対して1件ずつ添付ファイルを取得する設定
    3. 手順3.1通のメールに複数の添付ファイルがある場合、順番を管理しながら添付ファイルを1つずつ取得する設定
    4. 手順4.freee会計の「ファイルボックス登録用アドレス」宛にファイルを転送する設定
    5. 手順5.結果を確認する
  4. やってみた感想
  5. まとめ


リモートワークでの自動化を実現する「業務自動化ツール導入事例集」とは?
⇒導入事例集のダウンロードはこちらから


請求書アップロード作業の全体像

まずは、請求書アップロード作業の全体像を整理します。なお、本記事ではメールはGmail、会計ソフトはfreee会計を利用している環境を前提に解説します。

従来の作業フロー

従来は、請求書専用のメールアドレスに届いた請求書を手動でダウンロードし、その後、会計ソフトにドラッグアンドドロップしてアップロードしていました。この作業は月末月初に集中するため担当者の負担が大きく、またメールの見落としによる処理漏れが発生することもありました。

自動化後のフロー

今回の自動化では、freee会計の「ファイルボックス登録用アドレス」を活用します。「ファイルボックス登録用アドレス」とは、freeeが提供する、請求書のデータが添付されたメールを転送することで、添付ファイルを直接取り込むことができるアドレスのことです。詳しくはこちらをご覧ください。
クラウド型RPAツール「Coopel」が請求書メールを検索し、本文や添付ファイルを読み取ったうえで、このアドレス宛に転送します。これにより、freee会計へ自動で登録されます。
この一連の作業を、以下の3つのステップで自動化します。

1.1か月分の請求書メールを検索・取得
2.メールから請求書ファイルを抽出
3.freee会計のファイルボックス登録用アドレス宛にファイルを転送

なぜメールの転送機能ではなく、Coopelを使うのか?

「Gmailの自動転送機能を使えばいいのでは?」と思われるかもしれません。しかし、設定時に一つ問題があります。Gmailの自動転送では、転送先のアドレスで「確認コード」を受け取って入力する必要がありますが、freee会計のファイルボックス登録用アドレスは、ファイル付きメールを受信するためだけの専用アドレスであり、届いたメールを閲覧するメールボックスが存在しません。そのため、「確認コード」を閲覧できないのです。
また、GAS(Google Apps Script)でプログラムを組む方法もありますが、コードの記述やメンテナンスが必要なため、非エンジニアの方には運用が難しいのが実情です。
そこで今回は、プログラミング不要で確認コードの問題も回避でき、現場の担当者が自ら運用・管理しやすいCoopelを使った方法を紹介します。

本記事で解説する対象範囲


請求書の形式は、実際にはさまざまなパターンがあります。当社で確認されたものだけでも、以下のようなパターンがありました。


本記事では、最もシンプルで頻度の高い「PDFファイル添付」に絞って解説します。他のパターンについては別記事で紹介予定です。



手作業によるミスや遅延を解決するには?
⇒導入事例集のダウンロードはこちらから

Coopelシナリオ全体図

こちらが、「メールに添付されているPDF請求書を自動でfreee会計にアップするシナリオ」です。

アクションの詳細な設定

一度に見ると複雑なため、アクションをいくつかのグループに分けて解説します。

手順1.1か月分の請求書メールを検索して取得する設定

まずは、1か月間に届いたPDFファイルが添付されたメールを取得します。

指定期間の算出 (JavaScriptを利用)

今回のシナリオでは、「前月の8日から当月の7日まで」に届いたメールに添付されている請求書PDFをアップロードすることを想定しています。
この条件の開始日と終了日をJavaScriptによって取得します。
(例: 2026年の3月に実行した場合、開始日「2026/02/07」、終了日「2026/03/08 」が取得されます。)


[スクリプトを実行(開始日を取得)]に記載するコード
意味:先月7日の日付をyyyy/mm/ddの形式で返す

(() => {
  const now = new Date();
  const d = new Date(now.getFullYear(), now.getMonth() - 1, 7);
  const yyyy = d.getFullYear();
  const mm = String(d.getMonth() + 1).padStart(2, '0');
  const dd = String(d.getDate()).padStart(2, '0');
  return `${yyyy}/${mm}/${dd}`;
})();



[スクリプトを実行(終了日を取得)]に記載するコード
意味:今月8日の日付をyyyy/mm/ddの形式で返す

(() => {
  const now = new Date();
  const d = new Date(now.getFullYear(), now.getMonth(), 8);
  const yyyy = d.getFullYear();
  const mm = String(d.getMonth() + 1).padStart(2, '0');
  const dd = String(d.getDate()).padStart(2, '0');
  return `${yyyy}/${mm}/${dd}`;
})();

Gmail からメールを取得

上記で算出した日付を用いて、さらにフィルタリングを行います。
検索条件に関しては、Gmailの検索条件の指定方法 を参考にしました。

(to:[請求書を受信するメールアドレス])
AND(after:[スクリプトを実行(開始日を取得)])
AND(before:[スクリプトを実行(終了日を取得)])
AND(filename:pdf)

これにより、以下の条件をすべて満たすメールを絞り込みます。




手順2.取得したメールに対して1件ずつ添付ファイルを取得する設定

手順1で取得したメールが複数ある場合、まとめて処理しようとするとエラーになるため、1通ずつ処理していく必要があります。今回の設定では、取得したメールの件数分だけ手順2が繰り返される仕組みになっています。
なお、 Gmail の構造は以下のようになっており、「キーを指定して要素を取得」や「リストから要素を取得」などのアクションを用いて欲しい要素をとりだします。

[
    {
        “body”: “本文”,
        “subject”: “件名”,
        “to”: “宛先”,
        “cc”: “共有先”,
        “from”: “送信元”,
        “date”: “日付”,
        “attachments”:
[
“name”:”ファイル名”
“file”:”ファイルの場所”
]
     }
]
 

手順3.1通のメールに複数の添付ファイルがある場合、順番を管理しながら添付ファイルを1つずつ取得する設定

[Gmailから添付ファイルを取得]では1回の実行につき1つしか添付ファイルを取得できません。そのため、添付ファイルが複数ある場合は、ファイルの数だけ以下を行う必要があります。
①カウンターで取得するファイルの順番を管理する
②[Gmailから添付ファイルを取得]でその順番のファイルを1つ取得する
③取得したファイルのファイル名を取得する
④すべてのファイルを取得し終わるまで①~③を繰り返す


手順4.freee会計の「ファイルボックス登録用アドレス」宛にファイルを転送する設定

取得した添付ファイル付きのメールのうち、条件の合うもののみfreee会計の「ファイルボックス登録用アドレス」に転送します。
今回紹介する条件は一例です。ご利用の環境に合わせてアレンジしてください。

条件①:添付ファイル名に特定の文字が含まれている場合、転送しない

ファイル名を正規表現で判定し、社内ルールで定めた除外対象のファイルに該当する場合は、以降の処理をスキップします。これにより、対象外のファイルが誤ってfreeeに取り込まれることを防ぎます。
ファイル名の判定には正規表現を使用しています。この場合、「receipt」、「RECEIPT」、「Receipt」など大文字小文字問わず検出できます。

条件②:添付ファイル名に「pdf」が含まれる場合、転送する

添付ファイルがPDFかどうかを確認します。今回、請求書はPDF形式のみを対象としているため、画像やExcelなど他の形式のファイルは転送の対象外とします。

freee のメールアドレスにファイルを送信

最後に、条件に当てはまった添付ファイルを付けて、「ファイルボックス登録用メールアドレス」に送信します。

▶ファイルボックス登録用メールアドレスの確認はこちらから(freee会計利用者向け)

また、「Gmailから添付ファイルを取得」に用いた「カウンター」をリセットし、次の繰り返しでも使用できるようにします。

手順5.結果を確認する

今回の実行では、56件の請求書をアップロードすることができました。PDF ファイルの中で不要なものが含まれていることもあるので、最終的な確認は人が行う必要はありますが、以前、1件ずつメールを開いて添付ファイルをダウンロードし、それを会計ソフトにアップロードしていたときと比較するとかなりの時間短縮につながります。


やってみた感想

シナリオ開発を進める中で、細かい調整を繰り返しながらシナリオの精度を高めていきました。特に、 Coopel と連携することのできる他サービスへの理解が大事だと感じました。メール検索ではGmailの機能をCoopelと組み合わせることで、効率よく処理を実現できました。そのため、まず各ツールの機能を活かす方法を考え、それをCoopelに落とし込むという順序が、スムーズな自動化につながると感じました。

まとめ

今回は freee 会計への PDF 請求書の自動アップロードを行いました。
最終的なチェックは人が行う必要がありますが、ほとんど自動化でき、業務効率化につながったと思います。毎月の請求書アップロードの手間にお困りの方はぜひお試しください。
今回は「PDFファイル」が添付されているケースを解説しましたが、今後は「ZIPファイル」や「freee会計・Money Forwardなどのリンク(ボタンクリック)」が必要なパターンについても、続編として順次公開していく予定です。



定型業務の繰り返しにお困りではありませんか?
Coopelなら直感的な操作のクラウド型RPAで定型業務の繰り返しを手間なくカンタンに!
⇒Coopelの資料を見てみたい