NPO法人が寄付の記録から、毎月の寄付者へのお礼状を使い道の報告と合わせて下書きし、メールと郵送の原稿にする
寄付の記録(Google スプレッドシート)から前月の寄付者を拾い、寄付者ごとのお礼状を、その月の活動の報告と合わせて下書きします。メールで送る人には Gmail の下書きを、郵送の人には印刷用の原稿を作ります。
- 生成AI
- ChatGPT/Claude
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- その他/介護/教育
- 対象部門
- 総務
- 対象業務
- 書類作成
- 主な課題
- 人手が足りない/属人化している/書類作成に時間がかかる
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/属人化解消/工数削減
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 会計担当が前月分の入金をスプレッドシートに入れ終えたら、事務局の担当者が前月の寄付者を抜き出す
- 寄付者ごとに名簿を開き、初めての寄付か、何回目か、使い道の指定があるかを確かめる
- 前月の活動の報告(職員会議の資料)を開き、お礼状に入れる数字を拾う
- 過去のお礼状をひな形にして、寄付者に合わせて書き直す
- メールの人は Gmail で宛先と本文を入れて送る。郵送の人はワープロで印刷し、宛名を書いて封入する
- 送った日を名簿に記録する
- 人会計担当が前月分の入金を入れ終え、事務局長が前月の活動実績を「承認済み」にする
- 自動毎月5日の朝に Apps Script が動き、活動実績が承認済みかを確かめる
- 自動前月の寄付を寄付者ごとにまとめ、名簿と突き合わせて関係の区分(初回・継続・再開・指定寄付・法人)を決める
- 自動お礼状を送らない人(送付停止、返金済み、宛先不明)を外し、確認待ちの一覧に回す
- 自動寄付者ごとに、区分と承認済みの事実の一覧を Claude API に渡し、お礼の文面を JSON で受け取る
- 自動文面の中の差し込み記号を、表の数字と寄付者の情報に置き換える
- 自動メールの人は Gmail の下書きを作り、郵送の人は Google ドキュメントのひな形から原稿を作って PDF にする
- 人担当者が確認の一覧から1通ずつ下書きを読み、直して送る。郵送の分は印刷して封入する
- 自動送ったかどうかを一覧に記録し、名簿の「最後にお礼状を送った月」を更新する
各工程の詳しい説明を読む
- 会計担当が前月分の入金をスプレッドシートに入れ終えたら、事務局の担当者が前月の寄付者を抜き出す
- 寄付者ごとに名簿を開き、初めての寄付か、何回目か、使い道の指定があるかを確かめる
- 前月の活動の報告(職員会議の資料)を開き、お礼状に入れる数字を拾う
- 過去のお礼状をひな形にして、寄付者に合わせて書き直す
- メールの人は Gmail で宛先と本文を入れて送る。郵送の人はワープロで印刷し、宛名を書いて封入する
- 送った日を名簿に記録する
(a)月末まで終わらない。 240通を2名で書くと、1通15分でも月60時間です。事務局の2名はほかの仕事も持っており、お礼状は後回しになりやすい仕事です。 月の後半になって慌てて書くと、2番目の確かめが省かれます。
(b)書く人で内容がばらつく。 長く勤めている担当者は、継続寄付の人には「いつも」、初めての人には「はじめまして」と自然に書き分けます。新しい担当者は過去のお礼状をそのまま写すので、2年続けてくれている人に「初めてのご支援」と書いてしまうことがあります。 寄付者がいちばん気にするところです。
(c)数字を書き間違える。 3番目で拾う数字は、職員会議の資料のどの版かで変わります。確定前の数字を書いたお礼状と、確定後の数字を書いたお礼状が同じ月に混ざると、寄付者どうしで話が合わなくなります。
(d)使い道の指定が文面に出ない。 「学習支援に使ってほしい」と指定した寄付者に、フードバンクの話だけを書いて送ってしまう。指定は名簿の備考欄に書かれていることが多く、4番目でひな形を写すときに見落とされます。
- 【人】 会計担当が前月分の入金を入れ終え、事務局長が前月の活動実績を「承認済み」にする
- 【自動】 毎月5日の朝に Apps Script が動き、活動実績が承認済みかを確かめる
- 【自動】 前月の寄付を寄付者ごとにまとめ、名簿と突き合わせて関係の区分(初回・継続・再開・指定寄付・法人)を決める
- 【自動】 お礼状を送らない人(送付停止、返金済み、宛先不明)を外し、確認待ちの一覧に回す
- 【自動】 寄付者ごとに、区分と承認済みの事実の一覧を Claude API に渡し、お礼の文面を JSON で受け取る
- 【自動】 文面の中の差し込み記号を、表の数字と寄付者の情報に置き換える
- 【自動】 メールの人は Gmail の下書きを作り、郵送の人は Google ドキュメントのひな形から原稿を作って PDF にする
- 【人】 担当者が確認の一覧から1通ずつ下書きを読み、直して送る。郵送の分は印刷して封入する
- 【自動】 送ったかどうかを一覧に記録し、名簿の「最後にお礼状を送った月」を更新する
8番目は省きません。 1通ずつ読むので、時間はゼロになりません。変わるのは、白紙から書くのではなく、正しい区分と正しい数字が入った下書きを読むことになる点です。
6番目を AI の外に置いているのが、この設計の要です。 AIは「【実績1】」のような記号を文中に置くだけで、記号を数字に置き換えるのはスクリプトです。AIがどんな文章を書いても、数字は承認済みの表のものしか入りません。
02今回想定するシステム構成
寄付の記録・寄付者の名簿・月次の活動実績(Google スプレッドシート) │ ▼【トリガー】毎月5日の朝(時間主導型のトリガー) Google Apps Script ├──▶ 活動実績が「承認済み」かを確かめる(未承認なら止める) ├──▶ 前月の寄付を寄付者ごとにまとめ、関係の区分を決める ├──▶ 送らない人を外して確認待ちへ ▼ Claude API ── 区分と承認済みの事実から、お礼の文面を JSON で返す ▼ Google Apps Script ── 差し込み記号を表の値に置き換える ├──▶ メール希望 … Gmail の下書き(GmailApp.createDraft) └──▶ 郵送希望 … ひな形の文書をコピーして差し込み、PDF にして印刷フォルダへ ▼ 確認の一覧(スプレッドシート) ──▶【人】読んで直して送る
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Power Automate、Make |
| 生成AI | Claude API(Messages API、構造化出力) | OpenAI API |
| 保管 | Google スプレッドシート(寄付の記録、寄付者の名簿、活動実績、確認の一覧、処理ログ) | - |
| 文書 | Google ドキュメント(郵送用のひな形) | - |
| メール | Gmail(下書きの作成まで) | - |
新しく足すのは、Apps Script と、確認の一覧・処理ログのシート、郵送用のひな形の文書だけです。 寄付の記録と名簿は今のものを読むだけで、書き戻すのは名簿の「最後にお礼状を送った月」の列だけにします。
寄付の記録は、法人として持たなければならない記録の土台でもあります。 特定非営利活動促進法では、寄附者名簿を「寄附金の支払者ごとに当該支払者の氏名(法人にあっては、その名称)及び住所並びにその寄附金の額及び受け入れた年月日を記載した書類」と定め、認定特定非営利活動法人は毎事業年度初めの3か月以内に前事業年度の寄附者名簿を作成し、事務所に備え置くこととされています。この構成からは寄付の記録に書き込みません。 読むだけにしておけば、お礼状の仕組みの不具合が名簿の元になる記録を壊すことはありません。
寄付者には未成年が含まれうることも前提にします。 学習支援の活動では、子ども本人がお小遣いから寄付をくれることがあります。生成AIのサービスを選ぶときは、18歳未満が関わる用途での利用条件をその利用規約で確かめてください。 代替候補から Gemini API を外しているのはこのためです。
03どうやって実装するのか
処理の起点を決める
毎月5日の朝に、時間主導型のトリガーで動かします。 Apps Script の時間主導型のトリガーは、毎分から月に1回までの間隔で動かせます。公式のページでは、たとえば毎朝9時に設定しても9時から10時のあいだのどこかで動くことがあるとされているので、担当者が出勤する前に終わる時刻に置きます。
5日にしているのは、会計担当が前月の入金を入れ終え、事務局長が活動実績を確定させるのが月初の数日だからです。ただし、日付だけを条件にはしません。 スクリプトは最初に活動実績のシートを見て、前月の行の「承認」の列が「承認済み」になっていなければ、何も作らずに事務局長へ知らせて止まります。翌日の同じ時刻にもう一度見に行き、承認済みになった日に動きます。
インストール型のトリガーは、作った人のアカウントで動きます。 公式のページにも、インストール型のトリガーは常に作成者のアカウントで実行されると書かれています。下書きはそのアカウントの Gmail にできるので、トリガーは個人のアカウントではなく、事務局で共有している寄付窓口のアカウントで作ります。 担当者が辞めてアカウントが止まると、トリガーも止まります。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 寄付の記録 | 受付日、寄付者ID、金額、方法(口座振替・カード・振込)、使い道の指定、取消・返金の印 | 寄付の記録のシート |
| 寄付者の名簿 | 寄付者ID、氏名、敬称、個人か法人か、連絡方法(メール・郵送)、メールアドレス、住所、送付停止の印、初回寄付の月、最後にお礼状を送った月 | 名簿のシート |
| 活動実績 | 月、事業(フードバンク・学習支援)、実績の項目と値、承認の状態、承認した人 | 活動実績のシート |
| 文面の決まり | 団体の名前の書き方、署名、使ってよい言い回し・避ける言い回し | 文面の決まりのシート |
質を決めるのは、名簿の「初回寄付の月」と「送付停止の印」です。 初回寄付の月が空のままだと、継続の人を初回と取り違えます。送付停止の印は、「お礼状は要らない」と言われた人や、ご本人が亡くなったとご家族から連絡があった人に付けます。この印が漏れると、いちばん送ってはいけない相手に送ることになります。
活動実績は、1つの数字を1行で持ちます。 「2026年9月|フードバンク|食品をお届けした世帯|312世帯|承認済み」という形です。1行1事実にしておくと、AIに渡すときに事実ごとの記号(【実績1】【実績2】…)を振れます。
データの取得方法を決める
すべて同じスプレッドシートの中にあるので、Apps Script から各シートの値をまとめて読むだけです。 1行ずつ読むと遅くなるので、シートごとに範囲を一度に読み、スクリプトの中で寄付者IDをキーにして突き合わせます。
| 取るもの | どう取るか | 何に使うか |
|---|---|---|
| 前月の寄付 | 寄付の記録から受付日が前月の行、取消・返金の印が無い行 | お礼状の対象と金額 |
| 寄付者の情報 | 名簿を寄付者IDで引く | 宛名、連絡方法、区分の判定 |
| 過去の寄付の有無 | 寄付の記録で前月より前の行を寄付者IDで数える | 初回・継続・再開の区分 |
| 前月の活動実績 | 活動実績から前月かつ承認済みの行 | 文面に入れてよい事実 |
区分はスクリプトが決めます。 過去に寄付が無ければ「初回」、直近の12か月のうち前月以外にも寄付があれば「継続」、1年以上空いて再び寄付があれば「再開」です。使い道の指定があれば「指定寄付」、名簿で法人なら「法人」を重ねます。AIに寄付の履歴を渡して区分を決めさせることはしません。 渡すのは決まった区分の名前だけです。
AIへ渡す前に整形する
- 同じ人の寄付をまとめる … 前月に2回寄付をくれた人には、お礼状を1通にします。金額は合計し、回数を持たせます
- 送らない人を外す … 送付停止の印がある人、寄付が全額返金された人は対象から外し、確認の一覧に理由を書いて残します
- 宛先を確かめる … メール希望なのにアドレスが空、郵送希望なのに住所が空の人は、「宛先不明」として確認待ちに回します
- 敬称と宛名を組み立てる … 個人は「○○ 様」、法人は「株式会社○○ 御中」と担当者名を名簿から組み立てます。宛名は AI に作らせません
- 事実の一覧に記号を振る … 前月の承認済みの実績に【実績1】から順に記号を振り、寄付者の使い道の指定に関係する事業の実績には印を付けます
- 差し込む値を用意する … 寄付の金額(3桁区切り)、寄付の月、継続の月数を、スクリプトの側で文字にしておきます
4番目と6番目が、数字と名前を AI から切り離すところです。 AIに渡すのは「区分」「使い道の指定」「事実の一覧(記号と中身)」だけで、金額は【金額】、宛名は【宛名】という記号で書かせ、後から置き換えます。
AIに処理させる
させるのは、お礼の文面を4つの段落に分けて書くことです。 段落ごとに役割を決めておくと、確認する担当者が見る場所も決まります。
| 段落 | 書くこと | 使ってよい材料 |
|---|---|---|
| 冒頭のあいさつ | 季節のあいさつ一文と、寄付へのお礼 | 区分(初回・継続・再開) |
| 寄付へのお礼 | 区分に合わせたお礼。継続なら続けてくれていることへの感謝 | 区分、【金額】【継続月数】の記号 |
| 使い道の報告 | 前月の活動の様子を2〜3文で | 事実の一覧の記号だけ。指定寄付なら指定の事業の記号を先に使う |
| 結び | 今後の活動への一言と結びのあいさつ | 文面の決まり |
3段落目が中心です。 事実の一覧から、その寄付者に合う事実を2つか3つ選び、記号で文中に置きます。指定寄付の人には、指定された事業の事実を必ず1つ入れます。
| させないこと | 理由 |
|---|---|
| 数字を文中に直接書く | 承認済みの値と食い違いうる。記号で置き、後から差し込む |
| 事実の一覧にない活動を書く | 団体が事実として述べる部分。書いてよいのは承認済みの事実だけ |
| 寄付の使い道を約束する | 「全額を学習支援に使います」のような約束は、会計の決まりと食い違いうる |
| 税金の控除に触れる | 受領証明書は別の手続き。お礼状で扱いを述べない |
| 寄付者の事情を推し量る | 「ご家族で」「お子さまと」など、名簿にないことを書かない |
| 次の寄付をお願いする | お礼状の目的と違う。お願いは別の案内で行う |
1行目と2行目がいちばん起きやすい失敗です。 「先月は300世帯以上に」のように、記号を使わず丸めた数字を書いてくることがあります。スクリプトの側で、記号以外の数字が文中にないかを調べ、あれば下書きにせず確認待ちに回します。
指示内容を固定する
あなたはNPO法人の事務局で、寄付をくださった方へのお礼状を書く担当です。
以下の材料だけを使って、お礼状の本文を4つの段落に分けて書いてください。
【書き方】
- 段落1(greeting):季節のあいさつ一文と、寄付へのお礼。
- 段落2(thanks):寄付者の区分に合わせたお礼。
初回 … 初めてご支援いただいたことへのお礼
継続 … 続けてご支援いただいていることへのお礼。【継続月数】を使ってよい
再開 … 再びご支援いただいたことへのお礼
法人 … 法人としてのご支援へのお礼
- 段落3(report):前月の活動の様子を2〜3文で。事実の一覧から2〜3個選ぶ。
使い道の指定がある場合は、指定された事業の事実を必ず1つ入れる。
- 段落4(closing):今後の活動への一言と、結びのあいさつ。
【厳守事項】
- 数字を本文に直接書かないでください。数字を述べるときは、
事実の一覧の記号(【実績1】など)をそのまま本文に置いてください。
「約」「以上」をつけて丸めた数字も書かないでください。
- 事実の一覧にない活動・出来事・数字を書かないでください。
- 寄付金額は【金額】、宛名は【宛名】と書いてください。名前を書かないでください。
- 寄付金の使い道を約束する表現(「全額を〜に使います」等)を書かないでください。
- 税金の控除、受領証明書について書かないでください。
- 寄付者の家族構成や事情を推し量って書かないでください。
- 次の寄付のお願いを書かないでください。
- used_facts には、本文で使った記号をすべて並べてください。
- 材料が足りず書けないときは、本文を空にし、needs_review に理由を書いてください。
【寄付者の区分】{segment}
【使い道の指定】{designation}(なければ「なし」)
【事実の一覧】{facts}
【文面の決まり】{style_rules}
「丸めた数字も書かない」を書き足しているのは、記号を使えと言うだけでは足りないためです。 正確な数字を避けようとして「300世帯以上」と書くことがあり、それも承認されていない数字です。
名前を一切渡していないことにも意味があります。氏名を渡さなければ、AIが宛名を書き間違えることも、氏名から性別や年代を推し量って書くこともありません。
出力形式を固定する
Claude API の構造化出力で、次の形の JSON を受け取ります。 公式のページでは、output_config.format に json_schema を指定し、オブジェクトには additionalProperties: false を付けることとされています。
{
"donor_id": "D-0418",
"segment": "continuing | first | returning | corporate",
"greeting": "",
"thanks": "",
"report": "",
"closing": "",
"used_facts": ["【実績1】", "【実績3】"],
"uses_designation_fact": true,
"needs_review": ""
}
1つ目の理由は、段落ごとに見られることです。 担当者は3段落目だけを重点的に読めば足り、ひな形の文書でも段落ごとに差し込む場所を決めておけます。
2つ目は、used_facts をスクリプトが検算できることです。 本文に出てくる記号を数え、used_facts と一致するか、すべてが事実の一覧にある記号かを確かめます。指定寄付の人で uses_designation_fact が false なら、下書きにせず確認待ちに回します。
| 検査 | 結果が合わないとき |
|---|---|
本文の記号と used_facts が一致する | 確認待ち(記号の書き漏れ・書き足し) |
| 記号がすべて事実の一覧にある | 確認待ち(存在しない記号) |
| 記号を除いた本文に数字がない | 確認待ち(数字の直書き) |
指定寄付なら uses_designation_fact が true | 確認待ち(指定の事業に触れていない) |
needs_review が空 | 確認待ち(AIが書けないと判断) |
3つ目は、segment を返させて照合できることです。 渡した区分と違う値が返ってきたら、AIが区分を取り違えて書いた疑いがあります。公式のページには、列挙型の値は大文字小文字だけ違う形で返ることがあると書かれているので、比べるときは大文字小文字を区別しません。 また構造化出力は数値の最小値・最大値の制約に対応していないため、範囲の確かめはスクリプトの側で行います。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| スプレッドシート | Apps Script の読み書き | 寄付・名簿・実績を読む。確認の一覧と処理ログに書く |
| Claude API | UrlFetchApp.fetch | 寄付者ごとに文面を受け取る |
| Gmail | GmailApp.createDraft | メール希望の人の下書きを作る |
| Google ドキュメント | ひな形のコピーと replaceText | 郵送用の原稿を作る |
| Google ドライブ | getAs('application/pdf') | 原稿を PDF にして印刷フォルダへ |
API の呼び出しでは muteHttpExceptions を true にします。 公式のページでは、これを true にすると失敗の応答でも例外を投げずに応答を返すとされています。応答のコードを見て、混み合いの応答なら少し待ってやり直し、それ以外の失敗はその寄付者を確認待ちに回します。
Gmail は下書きまでです。 createDraft は宛先・件名・本文と、HTML の本文や差出人の表示名を指定して下書きを作り、GmailDraft を返します。差出人の表示名には団体名を入れ、返信先は寄付窓口のアドレスにします。
郵送用の原稿は、ひな形の文書をコピーして差し込みます。 ドライブのファイルの makeCopy でひな形をコピーし、本文の replaceText で記号を置き換えます。公式のページでは、replaceText は検索の文字列を正規表現として扱い、文書の中の文字のまとまりごとに照合するとされています。ひな形の記号の途中で文字の書式を変えると、記号が分かれて置き換わらないので、記号は書式を変えずに1度で入力します。置き換えたら getAs('application/pdf') で PDF にして、印刷フォルダに入れます。
人が確認する
全通を担当者が読みます。 確認の一覧には、寄付者ごとに区分、宛先、下書きへのリンク、検査の結果が並びます。
- 確認待ちを先に片づける … 宛先不明、検査で止まったもの、AIが書けなかったもの。多くは名簿の空欄を埋めれば解決します
- 3段落目を読む … 指定寄付の人に指定の事業が書かれているか、事実の選び方が不自然でないかを見ます
- 2段落目の区分を確かめる … 継続の人に「初めての」と書かれていないか。区分の取り違えは名簿の「初回寄付の月」の誤りから来ます
- 直して送る … メールは下書きを開いて送ります。郵送は PDF を印刷し、宛名と封入を確かめます
- 大きく書き直したら記録する … どの段落を、なぜ直したかを一覧に一言残します
1通4分を目安にします。 読む・直すで3分、送る・封入するで1分です。4分を超える下書きが続くなら、文面の決まりのシートか事実の一覧の書き方を見直します。
継続寄付の人には毎月お礼状が届きます。 同じ人に毎月同じ文面が届かないよう、3段落目に使う事実は毎月変わりますが、1段落目と4段落目が似通ってくることはあります。気になるようなら、文面の決まりのシートに季節の言葉を月ごとに足していきます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 活動実績が未承認 | 何も作らずに止まり、事務局長へ知らせる。翌日に見に行く |
| 送付停止の印がある | 対象から外し、確認の一覧に「送付停止」と残す |
| 全額が返金・取消された | 対象から外す。一部返金なら金額を直して進め、確認待ちに印を付ける |
| メールアドレスや住所が空 | 「宛先不明」で確認待ち。推測で宛先を作らない |
| 前回のメールが届かず戻ってきた | 名簿の印を見て郵送に切り替えるかを人が決める |
| 同じ人が前月に複数回寄付 | 1通にまとめ、金額は合計、回数を添える |
| 記号以外の数字が本文にある | 下書きにせず確認待ち。手で直すか、作り直す |
| API が応答しない・混み合い | 時間をおいてやり直し、続けて失敗したら確認待ち |
| 1回の実行が時間切れになる | 処理済みの印を見て、次の実行で続きから作る |
最後の行は、Apps Script の上限から来ます。 公式の上限の表では、スクリプトの実行時間は1回あたり6分で、トリガーで動かした合計の実行時間は個人のアカウントで1日90分、Google Workspace のアカウントで1日6時間です。240人分を1回で作ろうとすると6分を超えうるので、30人ずつ作り、残りがあれば数分後に動くトリガーを作って続きを作ります。 確認の一覧に「処理済み」の印を付けていくので、途中で止まっても二重には作りません。
ほかの上限も見ておきます。 作成できる文書は個人のアカウントで1日250、Google Workspace で1日1,500です。郵送の約70通は収まりますが、同じアカウントで別の文書づくりもしているなら、月初の同じ日に重ならないようにします。
記録を残す
- 実行の日時、対象の月、対象の人数、作った下書きの数、確認待ちの数
- 寄付者ごとに、渡した区分・使い道の指定・事実の記号の一覧
- AIが返した JSON の全文(差し込む前のもの)
- 検査の結果と、確認待ちにした理由
- 担当者が送った日時と、大きく直した段落と理由
- そのとき使った活動実績の行と、承認した人
3つ目で「差し込む前の JSON」を残すのは、誤りの出どころを分けるためです。 寄付者から「数字が違う」と言われたとき、AIが書いた文面の問題なのか、差し込んだ表の値の問題なのかを、差し込む前と後を比べるだけで切り分けられます。
最後の行は、後から活動実績が直されたときのためです。 承認の後で数字が直ることがあり、どの版の数字で何通送ったかが分かれば、訂正を送る相手を絞れます。
04実装レベルの3段階
最小構成では240通をさばけません。 1人ずつ貼り付けるので、確かめるための段階です。 本記事の想定は半自動化です。 月に1度まとめて作り、担当者が数日かけて読んで送ります。1通15分が4分になるのはこの段階です。 差が大きいのは、①の名簿の確認と②の数字拾いがなくなり、③の文面づくりが「読んで直す」に変わるからです。 本格構成は、寄付を受けてからお礼状が届くまでを短くしたい団体向けです。 単発の寄付の人に、寄付から数日でお礼が届く形です。ただし活動実績の承認が月に1度なら、使い道の報告は前々月の実績になります。 その違いを受け入れられるかを先に決めてください。
05工数削減シミュレーション
導入後 240件 × 4分 ÷ 60 = 16 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 毎月の継続寄付(マンスリーサポーター)と単発の寄付を合わせて月に百件以上受け、お礼状を事務局の数名で1通ずつ書いているNPO法人。寄付の記録と寄付者の名簿を Google スプレッドシートで持っており、Google Workspace を使っている団体。お礼状に毎月の活動の様子を添えたいが、書く人によって内容と熱量がばらつく場合。
- 寄付が月に数件で、代表が手書きで書くこと自体に意味がある団体。寄付の管理を専用の寄付管理サービスで行い、お礼のメールもその機能で送れている場合。活動実績の数字を毎月まとめる担当がおらず、お礼状に書いてよい事実が決まらない場合。なお、寄附金の受領証明書の発行や税制上の扱いはこの構成の対象外です。
07最小構成で試す方法
- 前月の寄付者から20人を選ぶ(初回・継続・指定寄付・法人がそれぞれ入るように)
- その20人について、実際に送ったお礼状を手元に用意する
- 前月の承認済みの活動実績を「【実績1】312世帯に食品をお届けした」の形で一覧にする
- 手元の Claude の画面に、第7章のプロンプトと、1人ずつ区分・使い道の指定・事実の一覧を貼る
- 出てきた文面を、実際に送ったお礼状と並べて、事務局の2人で読み比べる
20人は必ず区分をばらして選んでください。 継続の人ばかりだと、初回の人への書き方の問題が見えません。
| 出てきた内容 | 判断 |
|---|---|
| 実際のお礼状と遜色ない | スクリプトでつなぐ段階に進む |
| 数字を直接書いてくる | 指示の書き方で直る。構成は有効 |
| 区分に合わない書き方をする | 区分ごとの書き方の説明を足す |
| どれも同じ文面に見える | 事実の一覧が少なすぎる。 実績の行を増やす |
4行目が出ることは珍しくありません。 活動実績が「配布世帯数」の1行しか無いと、どの寄付者にも同じ事実しか書けません。ボランティアの人数、学習支援に来た子どもの延べ人数など、事務局長が毎月確定できる事実を数行に増やすと、文面が変わってきます。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 丸めた数字を本文に書いてくる | 記号以外の数字を検査で止める。 指示にも「丸めた数字も書かない」と書く |
| 継続の人に「初めての」と書く | 名簿の「初回寄付の月」を埋める。区分はスクリプトが決める |
| 指定寄付の事業に触れていない | uses_designation_fact で止める |
| 送ってはいけない人に下書きができる | 送付停止の印を最初に見る。亡くなった方の連絡は即日に印を付ける運用にする |
| 未承認の数字で作ってしまう | 承認の列を見てから動く。日付だけで動かさない |
| 実行が6分で止まる | 30人ずつ作り、続きを次の実行で作る |
| ひな形の記号が置き換わらない | 記号の途中で書式を変えない。1度で入力する |
| 担当者のアカウントでトリガーを作る | 作成者のアカウントで動く。共有の寄付窓口のアカウントで作る |
| 毎月同じ文面に見える | 事実の行を増やす。季節の言葉を文面の決まりに足す |
| 下書きが Gmail にたまる | 確認の一覧から送った印を付け、月をまたいだ下書きは消す |
| 税金の控除について書いてしまう | 指示で禁じ、本文に「控除」「証明書」があれば確認待ちにする |
上の2行が、この構成の失敗のほとんどです。 どちらも「寄付者が受け取る文書に、団体として誤ったことを書く」失敗で、数字と区分を AI の外で決めているかどうかで防げるかが決まります。
送付停止の行は、件数は少なくても重い失敗です。 ご家族から「本人が亡くなった」と連絡を受けたのにお礼状が届けば、その一通で団体との関係が終わることがあります。 名簿の印を付ける運用を、仕組みより先に決めてください。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 寄付者の氏名、住所、メールアドレス、寄付の金額と回数、使い道の指定、そして送付停止の理由(ご本人の逝去など)です。
- 外部へ渡す範囲を、文面に必要なものまでに限る … Claude API に渡すのは区分、使い道の指定、活動の事実だけです。氏名・住所・メールアドレス・金額は渡しません。 記号で書かせて、差し込みは Google Workspace の中で行います
- 送付停止の理由を AI に渡さない … 「逝去」などの理由は名簿の中だけで使い、対象から外す判定にだけ使います
- 送信を自動にしない … 下書きまでです。寄付者との関係に直接ひびきます
- 活動の事実は承認済みのものだけを使う … 団体が寄付者に事実として述べる内容です。承認の列を見ずに動く設定にしないでください
- API キーをスクリプトに直接書かない … スクリプトのプロパティに置き、スクリプトの編集権限を持つ人を事務局の担当に限ります
- 寄附者名簿の扱いと混ぜない … 寄付の記録は法人として備え置く名簿の土台です。この構成からは書き込まず、読むだけにします
誤りが起きた場合のリスクは、誤った数字や区分のお礼状を送ることと、送ってはいけない人に送ることの2つです。前者は記号と検査で、後者は送付停止の印と人の確認で防ぎます。どちらも、最後に人が読んでから送る形にしておけば、寄付者に届く前に止められます。
10まず何から始めるか
1週目:名簿の2つの列を埋める
寄付者の名簿に「初回寄付の月」と「送付停止の印」があるかを確かめ、無ければ足します。初回寄付の月は寄付の記録から埋め直せます。継続寄付の約180人から先に埋めます。
2週目:活動実績を1行1事実にする
前月の活動の報告から、お礼状に書いてよい事実を1行ずつ書き出し、事務局長が承認の列に印を付ける形にします。最初は5〜6行で十分です。
3週目:20人で試す
区分をばらして20人を選び、手元の Claude の画面で文面を作らせて、実際のお礼状と読み比べます。数字を直接書いていないか、指定寄付の事業に触れているかを最優先で見ます。
4週目:スクリプトで下書きまで作る
Apps Script で区分を決め、API で文面を作り、Gmail の下書きだけを作るところまで組みます。郵送の原稿はまだ手で作ります。
2か月目: 郵送用のひな形と PDF づくりを足し、確認の一覧で送った印を付けます。3か月目以降: 1通あたりの確認時間を測り、4分を超える下書きの理由を見て、文面の決まりと事実の書き方を直します。全通が月の前半に送れるようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 時間主導型のトリガーが毎分から月1回まで動かせ、時刻が少しずれうること(9時の設定が9〜10時に動く例)。インストール型のトリガーが作成者のアカウントで動くこと | Google: Installable triggers | 2026-10-14 |
| 実行時間が1回6分、トリガーの合計実行時間が個人1日90分・Workspace 1日6時間、文書の作成が個人1日250・Workspace 1日1,500であること | Google: Quotas for Google Services | 2026-10-14 |
createDraft が宛先・件名・本文と、HTML の本文・表示名・返信先などの指定で下書きを作り、GmailDraft を返すこと | Google: Class GmailApp | 2026-10-14 |
replaceText が検索の文字列を正規表現として扱い、文字のまとまりごとに照合すること | Google: Class Body | 2026-10-14 |
makeCopy が指定のフォルダに名前を付けてコピーを作ること。getAs で PDF に変換できること | Google: Class File | 2026-10-14 |
muteHttpExceptions を true にすると、失敗の応答でも例外を投げずに応答を返すこと | Google: Class UrlFetchApp | 2026-10-14 |
構造化出力を output_config.format の json_schema で指定し、additionalProperties: false が必要なこと。数値の最小値・最大値の制約に対応しないこと。列挙型の値が大文字小文字だけ違って返りうること | Claude: Structured outputs | 2026-10-14 |
| 寄附者名簿が寄附者ごとの氏名・住所・寄附金の額・受け入れた年月日を記載した書類であること。認定特定非営利活動法人が毎事業年度初めの3か月以内に前事業年度の寄附者名簿を作成し備え置くこと(第44条・第54条) | e-Gov 法令API: 特定非営利活動促進法 | 2026-10-14 |
寄附金の受領証明書や税制上の扱いは、所轄庁と顧問の税理士に確かめてください。 本記事は、お礼状の下書きづくりに絞って公式のページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1542)についてのご相談はこちらから。
