GAS1本で事務所の「請求書見逃し」をなくした話 — Gmailフィルター自動作成+請求書到着通知
東京で税理士事務所を運営しています。スタッフ数名の小さな事務所です。
このnoteでは、税理士事務所のIT環境を自力で構築してきた記録を書いています。今回は15年の通史から少し離れて、「今日1日で作った仕組み」の話をします。
(シリーズの全体像はこちらの記事をご覧ください)
2つの「Gmailの困りごと」
税理士事務所のGmailには、2つの困りごとがありました。
1つ目は、受信トレイが通知メールで埋まること。
顧客のクラウド決済サービスやキャッシュレス決済の通知が、毎日何通も届きます。顧客のアカウントに事務所のメールアドレスを登録しているので、売上通知やレポートがそのまま流れてくるのです。見る必要はあるけれど、受信トレイに常駐されると本当に対応が必要なメールが埋もれてしまいます。
2つ目は、請求書メールの見逃し。
うちの事務所にはさまざまな取引先から請求書がメールで届きます。福利厚生サービスの利用料、複合機のリース料、配送料、クラウドサービスの利用料など。どれも月1回届くだけなのですが、忙しい時期に後回しにしてしまうことがありました。
あるとき、取引先からのクラウド請求書の通知メールを放置していたことがありました。「あとでダウンロードしよう」と思っているうちに確定申告シーズンに突入し、気づいたときにはダウンロードリンクの有効期限(45日間)が切れていたのです。結局、先方に「すみません、もう一度送ってもらえますか」と連絡することになりました。請求書1枚のために先方の手を煩わせてしまい、申し訳ない気持ちになりました。
「ちゃんとメールを確認していれば防げた」話です。でも、繁忙期にそれを毎月確実にやり続けるのは、意外と難しい。
フィルターを「Claudeに言うだけ」で作れるようにした
1つ目の問題——通知メールの整理——は、Gmailのフィルター機能で対応できます。特定の送信元のメールを自動でラベル付けしてアーカイブする設定です。
ただ、新しい通知パターンが増えるたびにGmailの設定画面を開いてフィルターを手動で作るのは面倒でした。
そこで作ったのが、Notion × GAS(Google Apps Script)の連携による自動管理の仕組みです。
Notionにフィルター管理用のデータベースを作り、送信元・条件・ラベル名を登録します。GASがそのデータベースを読み取って、Gmailフィルターを自動で作成します。日次で同期するので、Notionに1行追加するだけでフィルターが反映されます。
普段の運用では、Claudeとのチャットで「この通知メールを自動アーカイブして」と言えば、Claudeがフィルター情報をNotionに登録してくれます。あとはGASが自動でGmailに反映する。フィルター作成の手間がほぼゼロになりました。
ちなみにこのGASは、フィルターの追加だけを行い、削除や変更はしない設計にしています。既存のGmailフィルター(120件以上ありました)を壊すリスクを排除するためです。初回デプロイ時、既存フィルターが全件無事だったときはほっとしました。
月5件の請求書を「見逃さない仕組み」を作った
2つ目の問題——請求書の見逃し——は、もう少し工夫が必要でした。
最初は「PDFを自動でダウンロードしてGoogle Driveに保存する仕組み」を作ろうとしていました。請求書サービスのAPIを使えば実現できるはずだ、と考えたのです。
ところが調べてみると、あるクラウド請求書サービスのAPIには「受取請求書」の機能がそもそも存在しませんでした。APIは請求書を送る側の機能だけで、受け取る側はカバーされていなかったのです。
それならメールに記載されたダウンロードリンクに直接アクセスしよう——と方針を変えました。GASのUrlFetchApp(URLにアクセスしてデータを取得する機能)で試してみると、返ってきたのはPDFではなくHTMLの空っぽのページでした。
ダウンロードページがJavaScriptで動的に描画される作りになっていて、GASではページの中身を読み取ることができなかったのです。他の請求書サービスも試しましたが、結果は同じでした。
発想を切り替える
ここで方針を大きく切り替えました。
PDFの自動ダウンロードは諦めて、「請求書が届いたこと」を確実に通知する仕組みにする。
完成したのが「InvoiceCollector」というGASです。やっていることはシンプルです。
日次トリガーで、ひとまず主要な5社分の請求書メールをGmailから検索する
メール本文からダウンロードリンクを正規表現で抽出する
Slackの専用チャンネルにリンク付きで通知する
処理済みのメールにGmailラベルを付けて二重通知を防ぐ
Slackの通知を見たら、リンクをタップするだけでダウンロードページに飛べます。「気づく」から「ダウンロードする」までがワンクリック。あの45日切れの失敗はもう起きません。
自動化の度合いは100%ではありません。でも、見逃しゼロは達成できました。月末の忙しい時期に「あの請求書、ダウンロードしたっけ?」とメールを漁る必要がなくなったのは、地味ですが大きな改善です。対象の請求書も、ソース定義を追加するだけで簡単に増やせる作りにしてあります。
なお、利用しているクラウド請求書サービスのひとつが、今年の秋にメール経由での受信機能を終了するという告知を出していました。ログインして請求書を閲覧・PDFを保存する機能自体は残るようですが、メールでの通知フローが変わる可能性があります。こうした変化にすぐ対応できるのも、自分で仕組みを持っている利点だと感じています。
「80点の仕組み」を半日で作る
今回の2つの仕組みは、どちらも1日で完成しました。
振り返って思うのは、「完全自動化」にこだわらないほうが、結果的にうまくいくということです。
Gmailフィルターの自動作成は「追加のみ」に絞ったから安全に運用できています。請求書のPDF自動ダウンロードは技術的に断念しましたが、通知に切り替えたことでシンプルな仕組みが短時間で完成しました。
税理士事務所のIT化では、完璧を目指すより、「今日から使える80点の仕組み」を素早く作るほうが価値があります。残りの20%は、本当に必要になったときに考えればいい。
AIと対話しながら作っていると、「ここは自動化できない」とわかった瞬間に、「じゃあ別の方法で」とすぐに切り替えられます。設計書を書いて外注して、出来上がりを待って、「やっぱり仕様が違った」とやり直す——そういうサイクルとは根本的に違う速度感です。
「自分の困りごとを、自分で、今日中に解決する」。それができるのが、今の時代のいちばんの恩恵だと思います。
