コラム
私はクラウド型RPAサービス「Coopel」のカスタマーサポート担当です。
今回は、従来は手動で行っていた「会計ソフトに請求書をアップロードする作業」をCoopelを用いて自動化しました。この自動化により、作業時間の短縮だけでなく、人為的ミスの削減も期待できます。
本記事では構築した際の方法や手順について詳しくご紹介します。
目次
まずは、請求書アップロード作業の全体像を整理します。なお、本記事ではメールはGmail、会計ソフトはfreee会計を利用している環境を前提に解説します。
従来は、請求書専用のメールアドレスに届いた請求書を手動でダウンロードし、その後、会計ソフトにドラッグアンドドロップしてアップロードしていました。この作業は月末月初に集中するため担当者の負担が大きく、またメールの見落としによる処理漏れが発生することもありました。
今回の自動化では、freee会計の「ファイルボックス登録用アドレス」を活用します。「ファイルボックス登録用アドレス」とは、freeeが提供する、請求書のデータが添付されたメールを転送することで、添付ファイルを直接取り込むことができるアドレスのことです。詳しくはこちらをご覧ください。
クラウド型RPAツール「Coopel」が請求書メールを検索し、本文や添付ファイルを読み取ったうえで、このアドレス宛に転送します。これにより、freee会計へ自動で登録されます。
この一連の作業を、以下の3つのステップで自動化します。
1.1か月分の請求書メールを検索・取得
2.メールから請求書ファイルを抽出
3.freee会計のファイルボックス登録用アドレス宛にファイルを転送
「Gmailの自動転送機能を使えばいいのでは?」と思われるかもしれません。しかし、設定時に一つ問題があります。Gmailの自動転送では、転送先のアドレスで「確認コード」を受け取って入力する必要がありますが、freee会計のファイルボックス登録用アドレスは、ファイル付きメールを受信するためだけの専用アドレスであり、届いたメールを閲覧するメールボックスが存在しません。そのため、「確認コード」を閲覧できないのです。
また、GAS(Google Apps Script)でプログラムを組む方法もありますが、コードの記述やメンテナンスが必要なため、非エンジニアの方には運用が難しいのが実情です。
そこで今回は、プログラミング不要で確認コードの問題も回避でき、現場の担当者が自ら運用・管理しやすいCoopelを使った方法を紹介します。
請求書の形式は、実際にはさまざまなパターンがあります。当社で確認されたものだけでも、以下のようなパターンがありました。
本記事では、最もシンプルで頻度の高い「PDFファイル添付」に絞って解説します。他のパターンについては別記事で紹介予定です。
こちらが、「メールに添付されているPDF請求書を自動でfreee会計にアップするシナリオ」です。

一度に見ると複雑なため、アクションをいくつかのグループに分けて解説します。
まずは、1か月間に届いたPDFファイルが添付されたメールを取得します。

今回のシナリオでは、「前月の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の検索条件の指定方法 を参考にしました。
これにより、以下の条件をすべて満たすメールを絞り込みます。


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

[Gmailから添付ファイルを取得]では1回の実行につき1つしか添付ファイルを取得できません。そのため、添付ファイルが複数ある場合は、ファイルの数だけ以下を行う必要があります。
①カウンターで取得するファイルの順番を管理する
②[Gmailから添付ファイルを取得]でその順番のファイルを1つ取得する
③取得したファイルのファイル名を取得する
④すべてのファイルを取得し終わるまで①~③を繰り返す
取得した添付ファイル付きのメールのうち、条件の合うもののみfreee会計の「ファイルボックス登録用アドレス」に転送します。
今回紹介する条件は一例です。ご利用の環境に合わせてアレンジしてください。

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

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

最後に、条件に当てはまった添付ファイルを付けて、「ファイルボックス登録用メールアドレス」に送信します。
▶ファイルボックス登録用メールアドレスの確認はこちらから(freee会計利用者向け)

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

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

シナリオ開発を進める中で、細かい調整を繰り返しながらシナリオの精度を高めていきました。特に、 Coopel と連携することのできる他サービスへの理解が大事だと感じました。メール検索ではGmailの機能をCoopelと組み合わせることで、効率よく処理を実現できました。そのため、まず各ツールの機能を活かす方法を考え、それをCoopelに落とし込むという順序が、スムーズな自動化につながると感じました。
今回は freee 会計への PDF 請求書の自動アップロードを行いました。
最終的なチェックは人が行う必要がありますが、ほとんど自動化でき、業務効率化につながったと思います。毎月の請求書アップロードの手間にお困りの方はぜひお試しください。
今回は「PDFファイル」が添付されているケースを解説しましたが、今後は「ZIPファイル」や「freee会計・Money Forwardなどのリンク(ボタンクリック)」が必要なパターンについても、続編として順次公開していく予定です。