ワクワクPJ 請求書自動化 — 仕組み解説

毎月の請求書収集・保存・転記を Python スクリプトが自動処理。人が触るのはイレギュラー対応のみ。

⏰ 平日9:00 自動実行 📦 Dropbox 保存 📊 Airtable 転記 💬 Chatwork 通知 16社対応
🔄 全体の流れ(毎日)
cron が Python スクリプトを起動(平日 9:00)
Mac の crontab に登録済み。土日は動かない。
0 9 * * 1-5   cd /Users/sekura/Claude && python3 chatwork_to_airtable.py
📅
日付チェック — 第3営業日より前なら終了
月初2日間は請求書がほぼ届かないので無駄に動かさない。第3営業日以降から本処理に入る。
💬
Airtable から取引先マスタを取得
「Chatwork」「ad@」「管理画面」の3グループに分けて順番に処理。マスタを更新するだけで翌日から自動処理される。
📧
各チャネルから請求書を取得・PDF解析
Chatwork API / Gmail IMAP / ポータルAPIにアクセスして PDF を取得。pdfminer でテキスト抽出 → 金額・月度を読み取る。
💾
重複チェック → Dropbox 保存 → Airtable 転記
すでに登録済みの月度はスキップ。初めての月度だけ保存・転記する。
🔔
第5営業日のみ — 未取得会社を Chatwork に通知
全社処理後、前月分がまだ登録されていない会社があれば専用ルームに通知。
📥 チャネル別の取得方法
💬 Chatwork
グラッドワン
Lifeplay
Chatwork API でルームのメッセージを全取得
今月キーワード(「26年6月」等)でフィルタ
[download:ファイルID] を検出
ダウンロードURLを発行してPDF取得
PDF解析 → 金額・月度を抽出
📧 Gmail (ad@)
ピークデジタル
バレットグループ
アドリーチ
AICROSS
メディア4u
SendGrid
ソーシャルPLUS
IMAP で「前月20日〜当月15日」のメールを取得
INBOX + 03.請求書ラベルの両方を検索
件名・送信元にキーワードが含まれるか確認
PDF添付を探す → なければ本文内のPDFリンク
PDF解析 → 金額・月度を抽出
🖥️ 管理画面ポータル
ショーケース ✅
WiLL Cloud(未実装)
インタースペース(未実装)
ジンテック(未実装)
モゲチェック(未実装)
エンバーポイント(未実装)
ニフティライフスタイル(未実装)
XSRFトークンを取得してログイン
帳票一覧APIで当月・前月を検索
PDFダウンロードAPIで取得
ファイル名から月度を抽出
PDF解析 → 金額を抽出
📄 PDF から何を読み取るか
抽出する情報
発生月度 2026/05
請求金額(税込) 110,000 円
この2つだけ取れれば Airtable に登録できる。
会社ごとの読み取りパターン
標準 「ご請求金額:○○円」
ショーケース 税抜・税・合計の3列 → 最大値
AICROSS 「請 求 金 額」スペース区切り
SendGrid 「¥○○」プレフィックス形式
フォールバック 「○○円」の最大値
🔒 重複しない仕組み
毎日動くので「同じ請求書を何度も登録してしまう」ことを防ぐ2段構えのチェックがある。
PDFを取得
Airtable に
この月度の記録がある?
ある
スキップ
ない
Dropboxに
ファイルがある?
ある
コピースキップ
Airtableのみ更新
ない
保存 & 転記
重複チェックはPDF内の発生月度ベース。例)7月に届いても「2026/06」の請求書なら6月分として正しく登録。
📅 月の中でいつ何が起きるか(7月の例)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
処理スキップ(第3営業日前)
通常処理(9:00に自動実行)
第5営業日(未着通知も送信)
検索窓の終端(16日以降は翌月扱い)
🔔 第5営業日の未着通知
通知のロジック
今日 = 第5営業日?
違ければ通知しない
対象月 = 前月
7月実行時 → 6月分をチェック
全16社を Airtable で確認
前月の金額が空の会社をリストアップ
Chatwork に通知
NOTIFY_CHATWORK_TOKEN のアカウントから
NOTIFY_ROOM_ID のルームへ送信
Chatwork に届くメッセージ(イメージ)
⚠️ 請求書 未取得アラート(2026年6月分)
第5営業日時点で、以下の会社の
請求書が未登録です:

・グラッドワン
・アドリーチ
・WiLL Cloud
全社登録済みの場合は通知しない
💾 データの保存先
Dropbox — PDFファイル
MRS_02_YF/00_請求書/
  202604請求書/
    ソーシャルPLUS202604.pdf
    バレットグループ202604.pdf
  202605請求書/
    ショーケース202605.pdf
    ピークデジタル202605.pdf
ファイルが存在する場合は上書きしない
Airtable — 月次金額一覧
会社名4月5月6月
ソーシャルPLUS16期110,000110,000
ピークデジタル16期7,000
ショーケース16期57,200
期 = 9月〜翌8月。2025年9月〜 = 16期。
📋 取引先マスタ — スクリプトの設定ファイル
Airtable の取引先マスタが「設定ファイル」の役割を果たしている。行を追加するだけで翌日から自動処理される。コードを触る必要はない。
フィールド内容
会社名Airtable・Dropboxでの識別名ソーシャルPLUS
請求書到着先Chatwork / ad@ / 管理画面ad@
検索キーワードメール件名・送信元で絞り込む文字列ソーシャルPLUS
ChatworkルームIDChatworkのみ使用305097198
🛠️ よく使う操作
手動テスト実行
cd /Users/sekura/Claude
python3 chatwork_to_airtable.py
今すぐ動かしたいときに実行。ログは chatwork_to_airtable.log に追記される。
新しい取引先を追加する手順
Airtable の取引先マスタに1行追加
会社名・到着先・キーワードを入力
翌営業日9:00から自動処理スタート
管理画面ポータルの場合はコードの追加実装が必要

ワクワクPJ請求書自動化 / YOURFIRTS事業部