
請求書の入金確認と督促メールをAIで自動化する方法【フリーランス向け】
当サイトはアフィリエイトプログラムを利用しており、紹介リンク経由での申込により報酬を得る場合があります。記事内で紹介するサービスには筆者が実際に使用しているものと、客観情報として比較掲載しているもの(未使用・PR表記あり)が含まれます。
結論
入金確認と督促メールの自動化は「Googleスプレッドシート×Google Apps Script×ChatGPT/Claude」の組み合わせで、プログラミング知識ゼロに近い状態でも実現できる。完全自動送信よりも「AI下書き→自分で確認→送信」のセミオート方式が、取引先との関係性を保ちながら回収率を高める現実的な落とし所だ。
なぜ督促メールは後回しになるのか#
フリーランスや小規模事業者の多くが、支払い期日を過ぎた請求書を見て見ぬふりをした経験があるはずだ。「催促して関係が悪くなったら困る」「メールの文章を考えるのが気まずい」という心理的ハードルが、督促を先送りにさせる。
私がフリーランスで仕事をし始めたころ、請求書を送ったあとは「入金通知が来るまで待つ」スタイルだった。期日を3週間過ぎてから慌ててメールを送ったこともある。そのとき、どんな文章を書けばいいか分からず、送信ボタンを押すまでに30分以上かかった。
AIを使えば「文章を考える時間」と「気まずさ」の両方がほぼゼロになる。問題は、どう仕組みを作るかだ。
自動化の全体像:3フェーズで考える#
入金確認と督促を自動化するには、次の3つの流れが必要だ。
| フェーズ | やること | 使うツール |
|---|---|---|
| ① 期日超過の検知 | 請求台帳から「今日時点で未入金のもの」を抽出 | Googleスプレッドシート + Apps Script |
| ② 督促文の生成 | 取引先・金額・期日をAIに渡して下書き作成 | ChatGPT / Claude |
| ③ 確認と送信 | 内容を目視確認してGmailから送る | Gmail(手動 or Apps Script) |
メモ
「完全自動送信」は技術的には可能だが、金額や宛先の確認なしで送ると誤送信リスクがある。「AI下書き→自分で確認→送信」のセミオート方式を強くおすすめする。
ステップ1:請求台帳をGoogleスプレッドシートで整える#
台帳の列構成#
まずはスプレッドシートに請求台帳を作る。最低限これだけあれば動く。
| 列名 | 内容の例 |
|---|---|
| 請求先名 | 株式会社○○ / 山田様 |
| 件名 | Webサイト制作費(2026年5月分) |
| 請求金額 | 150000 |
| 請求日 | 2026-05-15 |
| 入金期日 | 2026-05-31 |
| 入金日 | (空欄=未入金) |
| ステータス | 未入金 / 入金済 |
「入金日」が空欄で「入金期日」が今日以前のものが督促対象だ。台帳をGoogleスプレッドシートで持っておくと、あとのスクリプト連携がスムーズになる。
Apps Scriptで期日超過を自動検知する#
スプレッドシートの「拡張機能」→「Apps Script」から、下記のコードを貼り付ける。
function checkOverdueInvoices() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const data = sheet.getDataRange().getValues();
const today = new Date();
const overdue = [];
for (let i = 1; i < data.length; i++) {
const dueDate = new Date(data[i][4]); // 入金期日の列(5列目)
const paidDate = data[i][5]; // 入金日の列(6列目)
if (!paidDate && dueDate < today) {
overdue.push({
name: data[i][0],
subject: data[i][1],
amount: data[i][2],
dueDate: data[i][4]
});
}
}
Logger.log(overdue);
}
このスクリプトを毎朝9時に自動実行(トリガー設定)すれば、「今日時点で未入金の請求書リスト」を毎朝自動で作れる。
ステップ2:ChatGPT/Claudeで督促メールを下書きする#
手順
- スプレッドシートで期日超過の請求書を確認する
- 下記のプロンプトをChatGPTまたはClaudeのチャット画面に貼り付ける
- 取引先名・金額・期日・超過日数を実際の数字に書き換えて送信する
- 生成された文面を読んで、不自然な表現を自分の言葉で直す
- Gmailから送信する
督促メール生成プロンプト(コピペ用)#
以下の情報をもとに、丁寧な入金催促メールを書いてください。
- 宛先: [会社名・担当者名]
- 件名(請求内容): [例: Webサイト制作費 2026年5月分]
- 請求金額: [金額]円(税込)
- 入金期日: [日付]
- 現在の超過日数: [日数]日
条件:
- 関係性を壊さない丁寧なトーン
- 言い訳や責め口調は避ける
- 「お忙しいところ恐れ入りますが」など、クッション言葉を使う
- 銀行口座の案内は不要(別途お伝え済みのため)
- 200字程度で簡潔に
私がこのプロンプトをClaudeに初めて投げたとき、30秒で違和感のない催促文が出てきた。それまで30分かけていた文章作りが、確認と微調整だけで済む作業に変わった。
注意
AIが生成した文章は必ず自分で読んで確認すること。金額・宛先・日付の誤りはAIには気づけない。「AIが書いたから正しい」という思い込みが誤送信を生む。送る前の30秒の目視確認を省かないこと。
ステップ3:Apps ScriptでAI下書きをGmailに自動保存する(上級者向け)#
ChatGPT APIとApps Scriptを組み合わせると、「期日超過を検知→自動でAPIを叩いて下書き生成→Gmailの下書きフォルダに保存」という流れまで自動化できる。朝スプレッドシートを開いたら、送るだけの状態になっている、というイメージだ。
メモ
ChatGPT APIの利用には料金が発生する。GPT-4o miniなら1,000トークンあたり数円以下と安価だが、実際のコストは使い方によって変わる。試す前に公式の料金ページで最新の料金を確認してほしい。
Gmailに下書きとして保存するコードの骨格:
function createReminderDraft(recipientEmail, recipientName, subject, amount, overdueDays) {
const prompt = `
以下の情報をもとに、丁寧な入金催促メールを書いてください。
宛先: ${recipientName}、件名: ${subject}、金額: ${amount}円、超過日数: ${overdueDays}日
条件: 丁寧なトーン、クッション言葉を使う、200字程度
`;
const response = UrlFetchApp.fetch('https://api.openai.com/v1/chat/completions', {
method: 'post',
headers: {
'Authorization': 'Bearer ' + PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY'),
'Content-Type': 'application/json'
},
payload: JSON.stringify({
model: 'gpt-4o-mini',
messages: [{ role: 'user', content: prompt }]
})
});
const body = JSON.parse(response.getContentText()).choices[0].message.content;
GmailApp.createDraft(recipientEmail, '【ご確認のお願い】ご請求の件', body);
}
このコードは骨格を示すものだ。実際に動かすには、スプレッドシートの列構造に合わせてデータの取り出し方を調整する必要がある。
向き不向き:この方法が合う人・合わない人#
メリット
- 請求書を月に5件以上出しているフリーランス・個人事業主
- 督促メールを書くことへの心理的ハードルが高い人
- Googleスプレッドシートを日常的に使っている人
- 入金管理を手動でやっていて漏れが心配な人
デメリット
- 請求書が月1〜2件しかない(手動管理で十分)
- freeeやマネーフォワードなどの請求書ソフトをすでに使っている(そちらに督促機能がある場合も)
- Apps Scriptの設定を自分でやるのが難しい
回収率を上げる3つのコツ#
① 送るタイミングを3段階にする
期日翌日・7日後・14日後の3段階で送ると、適度なプレッシャーと丁寧さのバランスが取れる。体感では、1回目の督促メールが届く前に入金が完了するケースが多い。メールを送る意思があることが相手に伝わるだけで、効果がある。
② 件名に「未払い」「督促」を入れない
「未払いのご確認」より「先日のご請求についてご確認のお願い」のほうが、受け取った側の心理的抵抗が少なく、開封されやすい。
③ 文面のトーンを段階的に変える
1回目は「行き違いの可能性もありますが」という柔らかいトーン。2回目以降は「ご対応いただけますと幸いです」と少し明確に。ChatGPT/Claudeにプロンプトで「3回目の督促、少し明確なトーンで」と伝えると、段階に応じた文面を作ってくれる。
AIを使い始めてから、督促メールを送るまでの心理的抵抗もだいぶ薄れた。「AIが下書きを作ってくれるから、確認して送るだけ」という状態になると、後回しにしなくなる。これが一番の効果かもしれない。
AIを使った業務自動化をもっと体系的に学びたいなら#
今回紹介したスプレッドシート×AI連携は、請求管理の入口に過ぎない。見積もり作成・定期レポート・メール分類など、同じ考え方で自動化できる作業は多い。独学で進めるのが難しければ、非エンジニア向けに特化した講座で体系的に学ぶのも一つの選択肢だ。
PRおすすめAIスクール(業務自動化講座)ChatGPT/Claude活用・業務自動化を非エンジニア向けに教える講座。無料カウンセリングから始められるので、自分の業務に使えるかどうかを事前に確認できる。成果を保証するものではないが、具体的な自動化ケースを相談する入口として活用しやすい。まとめ#
- 入金期日の超過検知はGoogleスプレッドシート + Apps Scriptで自動化できる
- 督促メールの下書き生成はChatGPT/Claudeにプロンプトを渡すだけで30秒
- 完全自動送信より「AI下書き→確認→送信」のセミオートが安全で現実的
- 初期設定に1〜2時間かかるが、月に複数件請求があるなら元が取れる
- 督促の「気まずさ」が消えるのが、最大の副次効果
「督促メールは苦手」という人ほど、この仕組みを作っておく価値が高い。
よくある質問#
Apps Scriptを使ったことがないのですが、難しいですか?#
コードをゼロから書く必要はない。この記事のコードをコピー&ペーストして、列番号を自分の台帳に合わせるだけだ。スプレッドシートの「拡張機能」→「Apps Script」を開き、コードを貼り付けて「実行」ボタンを押す操作が最初のハードルになる。最初の設定に30分〜1時間見ておけば、あとは自動で動く状態にできる。
ChatGPT APIとブラウザのChatGPTは何が違いますか?#
ブラウザのChatGPT(chat.openai.com)やClaude(claude.ai)は手動で使うもので、プログラムから自動で呼び出すことはできない。Apps Scriptなどのコードから呼び出すには、それぞれのAPIを別途契約する必要がある(従量課金)。手動でプロンプトを貼り付けるセミオート方式なら、無料版のChatGPTやClaudeで十分だ。
freeeやマネーフォワードを使っていても、この方法は役に立ちますか?#
freeeやマネーフォワードには督促リマインダー機能がある場合があるため、まずはそちらの機能を確認するほうが効率的だ。この記事の方法は、専用ソフトを使っていない、または使いたくないという人向けの代替手段として設計している。すでに請求書ソフトを使っている場合、この記事で役立つとすればAI督促文のプロンプト部分だろう。