前のこの投稿では、あくまで人様の経験を再現したもので、実はあれで1年間運用してきました。だが最近また暇になり、n8nをいじるようになりましたので、これを機にZaimへの自動記帳を強力化してみました。

n8nとは
n8nを一言でいうと、エンジニア目線で使い勝手が最強な、自動化ツールです。
- 何ができる?: Slack、Google、Notionなど数百のアプリを繋いで、ルーチンワークを自動化します。
- 最大の強み: 「セルフホスト(自分のサーバーに設置)」すれば、実行回数に関わらず基本無料で使い放題です。
- 自由度: ノードを線でつなぐ視覚的な操作に加え、必要ならJavaScriptでゴリゴリにカスタマイズも可能です。
と、Geminiがそう答えましたが、前も言ったように私は文系で、とはいってもやはりiftttの代えとしては優秀である。
インストールの方法は割愛します。EasyPanelにテンプレートがあります。
何をしたいか
前回のパクリ(よく言うと、「ひと様の経験を再現しそれを記録」)で下記機能を実現できました。
- 自動実行: 設定した時間間隔(トリガー)ごとに、楽天ペイから届く通知メールを参照します。
- 対応メール: 以下の2種類の決済メールに対応しています。
- 実店舗での支払い
- オンライン決済
- 重複チェック: 過去2日間の Zaim 登録情報と照らし合わせ、重複がある場合は追加しません。
- 決済日の正確性: メールから決済日を取得するため、Zaim には実際に支払った日付で登録されます。
- 出金元: Zaim 内で手動設定した「楽天ペイ」(名称は任意)のウォレットから出金されます。
- 店舗名の反映: メールの内容に基づき、以下の名称が登録されます。
- 実店舗:メールに記載された「店舗名」
- オンライン:メールに記載された「利用サイト」
- カテゴリーと内訳: 任意で設定可能です。空欄でも動作しますが、自動分類のために「よく使う分類」を事前に設定しておくことを推奨します。
- 備考欄: 「システムから登録」と記載されます(この文言はコード内で変更可能です)。
そこで今回、下記仕様にすること目的とします。
- 自動実行: 設定した時間間隔ではなく、ほぼ楽天ペイのメールが来ると即時記帳します。
- 対応メール:実店舗とオンラインだけではなく、楽天モバイル、らくらく投資、ネット注文(私の場合それがマックでのオンライン注文)をすべて対応できるようにします。
- 出金元:楽天ペイ以外、ANA Pay、メルペイなど、決済通知メールさえあれば、すべて自動記帳可能という仕様に。※残念ながらpaypayは今回対象外にせざるを得ない。(が、公式より楽な方法がある)
- 通知機能:記帳できたらntfyにて通知が来る
- テスト期間中、失敗時の救済:MarcoDroidで手動記帳ボタンを作って、失敗する場合はスマホでぽちっと記帳。
記帳を自動化するためにこんなことまでするかな。
WorkFlowの設計

ごちゃごちゃになったけど、理屈は簡単で、ざーと言えば下記4ステップがあります。
- Gmail Trigger(Gメールトリガー)でそれぞれの公式メールをキャッチ
- 一旦中の内容を整理し、<日時><金額><店舗>だけ記載されるメールとして自分に送信
- HTTP REQUESTでGASのスクリプトを発動
- HTTP REQUESTでntfyに通知させる
この設計にした理由

①各社のメールは内容それぞれで、GASで別々で正規表現を必要があります、それもできないことはありませんが、今回複数の会社のメールを解析することになるので、作業量的には正規表現を書けばすぐ結果が見えるn8nで行いたかった。そうすれば今後別の何payを追加するとき、労力を費やさずに簡単に自動記帳の種類を増やせます。
②時間間隔トリガーではなく、GmailTriggerでFlowを始動させたいので、GASにある本来のコードに手を加わって、HTTP REQUESTで動かせるようにしました。
③心配性なので、通知もいります。
できたらこうなる


払って2分後に通知が来ました。一応大成功。WorkFlow上通知に金額を反映させたりすることできますが、一旦これで。
具体的な設定は下記をご参照ください。
コメントは受け付けていません。