Media > AI活用ユースケース > 経理 > 業界団体・同窓会の事務局が会費の納入状況をスプレッドシートで管理し、Apps Script と AI で未納の会員への案内の文面を事情に合わせて下書きする

業界団体・同窓会の事務局が会費の納入状況をスプレッドシートで管理し、Apps Script と AI で未納の会員への案内の文面を事情に合わせて下書きする

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

会費の請求と入金の記録(Google スプレッドシート)から、期限を過ぎた未納の会員を毎月拾い、案内の段階と会員ごとの事情に合わせた案内のメールを下書きします。事務局の担当が読んで直し、送ります。

サマリー
生成AI
ChatGPT/Claude
連携・自動化
Google Apps Script/Make/Power Automate
対象業界
その他/士業/教育
対象部門
経理
対象業務
台帳・マスタ管理/書類作成
主な課題
属人化している/書類作成に時間がかかる/期限・対応漏れが起きる
AIで行う処理
生成
主な効果
品質標準化/工数削減/機会損失防止
導入難易度
★☆☆☆☆
実装レベル
半自動化
費用感
API連携(中)
人間の確認
必須
現在工数
20h/月
AI導入後
6h/月
想定削減
70%
年間削減
168h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 月初に、会費の記録のシートで期限を過ぎて入金のない会員を絞り込む
  2. 会員ごとに名簿を開き、会費の担当者と、過去のやり取りのメモを読む
  3. 前回の案内をいつ送ったか、何回目かを Gmail の送信済みから探す
  4. 一部だけ入金されている、休会の相談中など、事情があるかを確かめる
  5. 過去の案内をひな形にして、会員名・金額・期限・振込先を書き換える
  6. 3回目の案内には、会則の条文を書き写す
  7. 送信し、送った日をシートに書く
導入後(After)
  1. 人会計担当が前月分の入金を会費の記録のシートに入れ、状態の欄を「入金反映済み」にする
  2. 自動毎月5日の朝に Apps Script が動き、入金が反映済みかを確かめる
  3. 自動期限を過ぎて入金が足りない会員を拾い、案内の段階(1回目・2回目・3回目)を送付の記録から決める
  4. 自動会員ごとの事情(一部入金・担当者の交代・休会の相談中・宛先の戻り・連続の未納)を記録から決める
  5. 自動休会の相談中や、事務局長の確認が要る会員を、下書きを作らずに確認待ちに回す
  6. 自動残りの会員ごとに、段階と事情を Claude API に渡し、案内の文面を JSON で受け取る
  7. 自動文面の差し込み記号を、記録の値(会員名・金額・期限・振込先・会則の条文)に置き換える
  8. 自動Gmail の下書きを作り、請求書の PDF を添付する
  9. 人担当が確認の一覧から下書きを読み、直して送る
  10. 自動送ったかどうかを一覧から送付の記録に移す
各工程の詳しい説明を読む
  1. 月初に、会費の記録のシートで期限を過ぎて入金のない会員を絞り込む
  2. 会員ごとに名簿を開き、会費の担当者と、過去のやり取りのメモを読む
  3. 前回の案内をいつ送ったか、何回目かを Gmail の送信済みから探す
  4. 一部だけ入金されている、休会の相談中など、事情があるかを確かめる
  5. 過去の案内をひな形にして、会員名・金額・期限・振込先を書き換える
  6. 3回目の案内には、会則の条文を書き写す
  7. 送信し、送った日をシートに書く

(a)送るのが遅れる。 120件を2名で書くと、1件10分でも月20時間です。事務局は総会や研修会の準備も持っており、案内は後回しになります。 1回目の案内が期限の2か月後になり、そのまま2回目の時期と重なる会員が出ます。

(b)事情に合わない文面を送ってしまう。 振込の手数料を引いた金額で入金してきた会員に、全額が未納であるかのような文面を送る。休会の相談を受けていた会員に、退会の条文を添えた3回目の案内を送る。 2番と4番を省くと起きる失敗で、会員との関係にいちばん響きます。

(c)誰にいつ送ったかが追えない。 3番目は Gmail の送信済みを探す作業で、担当者が2人で送っていると、相手の送った分は見つかりません。 同じ会員に同じ月に2通届いたことがありました。

(d)書き写しを間違える。 金額や期限、振込先の口座番号を、ひな形の上で書き換えています。前の会員の金額が残ったまま送ってしまうのが、いちばん起きやすい誤りです。

  1. 【人】 会計担当が前月分の入金を会費の記録のシートに入れ、状態の欄を「入金反映済み」にする
  2. 【自動】 毎月5日の朝に Apps Script が動き、入金が反映済みかを確かめる
  3. 【自動】 期限を過ぎて入金が足りない会員を拾い、案内の段階(1回目・2回目・3回目)を送付の記録から決める
  4. 【自動】 会員ごとの事情(一部入金・担当者の交代・休会の相談中・宛先の戻り・連続の未納)を記録から決める
  5. 【自動】 休会の相談中や、事務局長の確認が要る会員を、下書きを作らずに確認待ちに回す
  6. 【自動】 残りの会員ごとに、段階と事情を Claude API に渡し、案内の文面を JSON で受け取る
  7. 【自動】 文面の差し込み記号を、記録の値(会員名・金額・期限・振込先・会則の条文)に置き換える
  8. 【自動】 Gmail の下書きを作り、請求書の PDF を添付する
  9. 【人】 担当が確認の一覧から下書きを読み、直して送る
  10. 【自動】 送ったかどうかを一覧から送付の記録に移す

3番目と4番目をスクリプトが決めることが、この設計の要です。 段階を間違えると、1回目の会員に退会の条文が届きます。段階は送付の記録の数で決まるもので、AIに推し量らせるものではありません。

5番目で、文面を作らない会員を先に分けます。 休会の相談を受けている会員や、理事が個人的に事情を聞いている会員に、機械的に案内を作ること自体が誤りだからです。

02今回想定するシステム構成

構成図
会員名簿 + 会費の請求・入金の記録 + 送付の記録(Google スプレッドシート)
   │
   ▼【トリガー】毎月5日の朝(時間主導型のトリガー)
Google Apps Script
   ├──▶ 入金が「反映済み」かを確かめる(未反映なら止める)
   ├──▶ 期限を過ぎた未納の会員を拾い、段階と事情を決める
   ├──▶ 休会の相談中・要確認の会員を確認待ちへ
   ▼
Claude API ── 段階と事情から、案内の文面を JSON で返す
   ▼
Google Apps Script ── 差し込み記号を記録の値に置き換え、検査する
   └──▶ Gmail の下書き(GmailApp.createDraft、請求書の PDF を添付)
   ▼
確認の一覧(スプレッドシート) ──▶【人】読んで直して送る
役割想定する製品代替候補
実行環境Google Apps ScriptPower Automate、Make
生成AIClaude API(Messages API、構造化出力)OpenAI API
保管Google スプレッドシート(会員名簿、会費の記録、送付の記録、確認の一覧、処理ログ)-
メールGmail(下書きの作成まで)-
会計いまの会計ソフト(入金の確認はこれまでどおり)-

新しく足すのは、Apps Script と、送付の記録・確認の一覧・処理ログのシートだけです。 入金の確認は会計担当がこれまでどおり行い、この構成は会計ソフトにも会費の記録の入金の欄にも書き込みません。 書き込むのは送付の記録だけです。

会則の条文は、条文のシートに1か所だけ持ちます。 3回目の案内に添える「会費を一定の期間納めない会員は…」の条文は、AIに書かせると言い回しが少しずつ変わります。 条文はシートから差し込み、改正があればシートの1行を直します。

同窓会で使う場合は、会員に在校生が含まれないことを確かめてください。 同窓会は卒業生の会であることが多いものの、在校生を準会員とする会もあります。会費の案内は会員本人に届く文書で、18歳未満が受け取りうる場合は扱いを別にします。 代替候補から Gemini API を外しているのは、18歳未満が使いうるサービスでの利用を規約で禁じている生成AIがあるためです。

03どうやって実装するのか

Step1

処理の起点を決める

毎月5日の朝に、時間主導型のトリガーで動かします。 Apps Script の時間主導型のトリガーは、毎分から月に1回までの間隔で動かせます。公式のページでは、9時に設定すると9時から10時のあいだのどこかで動き、その時刻が保たれるとされています。担当が出勤する前に終わる時刻に置きます。

ただし、日付だけを条件にはしません。 前月の入金が会費の記録に入りきっていないうちに案内を作ると、月末に払ってくれた会員にまで未納の案内が届きます。 スクリプトは最初に会費の記録のシートの「状態」の欄を見て、前月分が「入金反映済み」でなければ何も作らず、会計担当へ知らせて止まります。翌日の同じ時刻にもう一度見に行き、反映済みになった日に動きます。

インストール型のトリガーは、作った人のアカウントで動きます。 公式のページにそう書かれており、Gmail の下書きもそのアカウントにできます。トリガーは担当者個人ではなく、事務局の会費窓口のアカウントで作ります。 会員から返信が来るのもこのアカウントになり、2人の担当が同じ受信箱を見られます。トリガーが失敗したときのまとめのメールもこのアカウントに届きます。

Step2

入力データを集める

データ中身取得元
会費の記録会員の番号、請求の番号、請求日、請求額、支払の期限、入金日、入金額、入金の状態会費の記録のシート
会員名簿会員の番号、会員名、会費の担当者の氏名と部署とメールアドレス、担当者を更新した日、休会の相談の印、事務局のメモ名簿のシート
送付の記録会員の番号、請求の番号、案内の段階、送った日、送った人、メールの戻りの有無送付の記録のシート
決まり段階ごとの日数、手数料の差の扱い、会則の条文、振込先決まりのシート

質を決めるのは、名簿の「担当者を更新した日」です。 会費の担当者が替わったことを会員から知らされても、名簿を直す日が記録されていないと、請求書を送った後に担当者が替わったのかどうかが分かりません。 この日付があれば、「請求書が新しい担当者の手元に届いていないかもしれない」という事情を機械的に拾えます。

休会の相談の印は、事務局の誰が受けた相談でも付けます。 理事や事務局長が個人的に聞いた話は記録に残りにくく、印が無いまま3回目の案内が飛ぶのが、この業務でいちばん避けたい失敗です。

Step3

データの取得方法を決める

すべて同じスプレッドシートの中にあるので、Apps Script から各シートの値を範囲でまとめて読みます。 スクリプトの中で会員の番号と請求の番号をキーにして突き合わせます。

取るものどう取るか何に使うか
期限を過ぎた未納会費の記録から、期限が過ぎ、入金額が請求額に足りない行案内の対象
足りない額請求額 − 入金額一部入金かどうかの判断と、差し込む金額
案内の段階送付の記録で、同じ請求の番号の案内の数を数える1回目・2回目・3回目
担当者の交代名簿の「担当者を更新した日」と請求日を比べる事情の判定
連続の未納会費の記録で、前年の請求も未納のまま残っているか事情の判定

段階は、送付の記録だけで決めます。 期限からの日数で決めると、前の月に案内を送りそびれた会員が、いきなり2回目になります。送った回数で決めれば、送りそびれても段階が飛びません。 ただし、前回の案内から決まりの日数(1か月)が経っていない会員は対象から外します。

Step4

AIへ渡す前に整形する

  1. 入金の状態を確かめる … 前月分が「入金反映済み」かを見ます。反映前なら止めます
  2. 足りない額を出す … 請求額から入金額を引きます。差が決まりのシートの「手数料の差の上限」以下なら、未納として扱わず、確認の一覧に「手数料差」として出します
  3. 段階を決める … 送付の記録の数で、1回目・2回目・3回目を決めます。3回目を送った会員は対象から外し、事務局長の確認待ちに回します
  4. 事情を決める … 次の表の順に当てはめ、当たったものを1つ以上付けます
  5. 確認待ちを分ける … 休会の相談中、事務局のメモに「理事が対応中」とある、宛先が戻ってきた会員は、下書きを作らずに確認待ちにします
  6. 差し込む値を用意する … 会員名、担当者の氏名、足りない額(3桁区切り)、元の期限、新しい期限、振込先、条文を、スクリプトの側で文字にしておきます
事情決め方
一部入金入金額が0より大きく、請求額に足りない
担当者の交代担当者を更新した日が、請求日より後
連続の未納前年の請求も未納のまま
初めての未納過去に案内を送った記録が無い
特になし上のどれにも当たらない

AIには、決まった事情の名前だけを渡します。 入金の履歴や名簿のメモをまるごと渡して「事情を読み取って」とすると、メモに書かれた個人的な話を文面に書き込むことがあります。

Step5

AIに処理させる

させるのは、段階と事情に合わせて、案内のメールの件名と本文を書くことです。 本文は4つの段落に分けます。

段落書くこと使ってよい材料
冒頭時候のあいさつと、日頃の活動への協力へのお礼段階
用件会費の入金がまだ確認できていないこと【会費の年度】【元の期限】の記号、事情
事情への配慮事情に合わせた一言(担当者の交代なら請求書の再送、一部入金なら差額のお願い)事情、【不足額】の記号
お願いと結び新しい期限までの入金のお願い、問い合わせ先、入れ違いへのおわび【新しい期限】【振込先】の記号

3段落目が、この構成の中心です。 担当者の交代なら「ご担当の方が替わられた際に請求書がお手元に届いていない場合もあるかと存じ、改めてお送りします」、一部入金なら「一部をお振り込みいただいており、ありがとうございます。差額の【不足額】について…」。この一言があるかないかで、受け取った会員の受け止め方が変わります。

させないこと理由
金額・期限・振込先を文中に書く記録の値と食い違いうる。記号で置き、後から差し込む
会則の条文を書く・言い換える条文はシートから差し込む。言い回しを変えない
退会・資格の停止・法的な措置に触れる段階と理事会の決議で決まること。AIの文面で予告しない
未納の理由を推し量る「お忙しいことと存じますが」程度にとどめ、事情を作らない
会員の評判や過去の関係に触れる名簿のメモは渡さず、文面にも書かない

3行目は、3回目の案内でも同じです。 3回目に添える会則の条文は、スクリプトが本文の後に差し込みます。AIの書く本文の中では、退会という言葉を使わせません。 条文を添える理由の一文(「会則の該当の条文を念のため添えます」)も、決まりのシートの固定の文にします。

Step6

指示内容を固定する

あなたは業界団体の事務局で、会費の入金がまだ確認できていない会員企業の
ご担当者へ、会費のご案内のメールを書く担当です。
以下の材料だけを使って、件名と、本文を4つの段落に分けて書いてください。

【書き方】
- subject:件名。「年会費のご案内」を含め、30字以内。
- greeting:時候のあいさつ一文と、日頃のご協力へのお礼。
- notice:会費の入金がまだ確認できていないことを、穏やかに伝える。
    【会費の年度】【元の期限】の記号を使う。
- consideration:事情に合わせた一言。
    一部入金 … 一部のお振込みへのお礼と、差額【不足額】のお願い
    担当者の交代 … 請求書が届いていない可能性への配慮と、請求書の再送
    初めての未納 … 行き違いの可能性への配慮
    連続の未納 … 前年度分も合わせてご確認いただきたい旨
    特になし … 空にする
- closing:【新しい期限】までのお願い、【振込先】、問い合わせ先、
    入れ違いの場合のおわび、結びのあいさつ。

【段階ごとの調子】
- 1回目:ご確認のお願い。行き違いの可能性を先に書く。
- 2回目:改めてのお願い。1回目のご案内を送ったことに触れる。
- 3回目:最後のお願いとして丁寧に。強い言葉を使わない。

【厳守事項】
- 金額・日付・口座を本文に直接書かないでください。記号をそのまま置いてください。
- 会則の条文を書かない・要約しないでください。
- 退会、資格の停止、法的な措置、催告といった言葉を使わないでください。
- 未納の理由を推し量って書かないでください。
- 会員名、担当者名は【会員名】【担当者名】と書いてください。
- used_tokens には、本文で使った記号をすべて並べてください。
- 材料が足りず書けないときは、本文を空にし、needs_review に理由を書いてください。

【案内の段階】{stage}
【事情】{circumstances}
【文面の決まり】{style_rules}

「催告」まで禁じているのは、3回目の調子を指示すると法律の言葉を持ち出すことがあるためです。 催告という言葉には法的な意味があり、事務局の案内のメールに AI の判断で書かれてよい言葉ではありません。 強さは段階ごとの調子の書き方で決め、言葉の選び方は禁止で絞ります。

事情を複数渡すことがあります。 担当者が替わり、しかも一部だけ入金されている、という会員もいます。その場合は consideration に2つの事情を1〜2文で入れるよう、文面の決まりに書いておきます。

Step7

出力形式を固定する

Claude API の構造化出力で、次の形の JSON を受け取ります。 公式のページでは、output_config.format に type: "json_schema" を指定し、オブジェクトには additionalProperties: false を付けることとされています。

{
  "member_no": "M-0582",
  "stage": "first | second | third",
  "circumstances": ["partial_payment", "contact_changed"],
  "subject": "",
  "greeting": "",
  "notice": "",
  "consideration": "",
  "closing": "",
  "used_tokens": ["【会費の年度】", "【元の期限】", "【不足額】", "【新しい期限】", "【振込先】"],
  "needs_review": ""
}

1つ目の理由は、記号の使い方をスクリプトで検算できることです。

検査合わないとき
本文の記号と used_tokens が一致する確認待ち(記号の書き漏れ・書き足し)
記号がすべて決まった記号の一覧にある確認待ち(存在しない記号)
記号を除いた本文に数字・口座らしい文字列がない確認待ち(直書き)
本文に「退会」「停止」「法的」「催告」がない確認待ち(禁じた言葉)
一部入金なら【不足額】、どの段階でも【新しい期限】がある確認待ち(要る記号の欠け)
stage と circumstances が渡した値と同じ確認待ち(取り違え)

2つ目は、段落ごとに見られることです。 担当は3段落目を重点的に読めば足ります。1段落目と4段落目は、段階が同じならほぼ同じ形になります。

3つ目は、stage と circumstances を返させて照合できることです。 公式のページでは、列挙型の値は大文字小文字だけ違う形で返ることがあるとされているので、比べるときは大文字小文字を区別しません。 構造化出力は数値の最小値・最大値の制約に対応していないため、金額の範囲の確かめはスクリプトの側で行います。

Step8

システムへ連携する

つなぎ先方式内容
スプレッドシートApps Script の読み書き名簿・会費の記録・決まりを読む。確認の一覧・送付の記録・処理ログに書く
Claude APIUrlFetchApp.fetch会員ごとに文面を受け取る
GmailGmailApp.createDraft案内の下書きを作り、請求書の PDF を添付する

API の呼び出しでは muteHttpExceptions を true にします。 公式のページでは、これを true にすると失敗の応答でも例外を投げないとされています。応答のコードを見て、混み合いならしばらく待ってやり直し、それ以外の失敗はその会員を確認待ちに回します。 API キーはスクリプトのプロパティに置きます。公式のページでは、スクリプトのプロパティはそのスクリプトの利用者全員で共有され、スクリプトの間では共有されないとされています。

Gmail は下書きまでです。 createDraft は宛先・件名・本文に加えて、添付のファイル、CC、HTML の本文、差出人の表示名、返信先を指定して下書きを作れます。担当者の交代の事情がある会員には、請求書の PDF を添付します。 請求書は会計ソフトから請求の番号の名前で決まったフォルダに書き出しておき、スクリプトがその番号のファイルを添付の配列に入れます。ファイルが見つからなければ、添付せずに確認待ちの印を付けます。

CC には会員の代表者を入れません。 3回目の案内でも同じです。会費の担当者を飛ばして代表者に知らせるかどうかは、事務局長が決めることです。 このメソッドを使うスクリプトには https://mail.google.com/ のスコープの承認が要るとされているので、最初の承認は会費窓口のアカウントで行います。

Step9

人が確認する

全件を担当が読みます。 確認の一覧には、会員ごとに段階、事情、足りない額、検査の結果、下書きへのリンクが並びます。

  1. 確認待ちを先に片づける … 休会の相談中、理事が対応中、宛先の戻り、3回目を送り終えた会員。事務局長に回すものと、名簿を直せば済むものに分けます
  2. 「手数料差」を見る … 差額を請求しないと決まりで定めた範囲のものです。会計担当と相談し、入金の記録を「完納」に直します
  3. 3段落目を読む … 事情に合った一言になっているか。一部入金の会員に全額が未納のように読める文が混ざっていないか
  4. 差し込まれた値を1つ確かめる … 足りない額を会費の記録と見比べます
  5. 直して送る … 下書きを開いて送ります。送った後に確認の一覧の「送付」に印を付けます

1件3分を目安にします。 読む・直すで2分、添付と宛先の確認・送信で1分です。3回目の案内は少していねいに読み、 条文が正しく差し込まれているかを見ます。

入れ違いが起きることを前提にします。 5日に下書きを作り、10日に送る間に入金が届くことがあります。送る前に会費の記録の入金の欄をもう一度見るのが、担当の最後の確認です。

Step10

例外に対処する

起きること対応
前月の入金が反映前何も作らずに止まり、会計担当へ知らせる。翌日に見に行く
足りない額が手数料の差の範囲未納にせず「手数料差」で確認の一覧へ
休会の相談中・理事が対応中下書きを作らず確認待ち。機械的に案内しない
3回目を送り終えた対象から外し、事務局長の確認待ち
メールアドレスが空・戻ってきた確認待ち。推測で宛先を作らない。代表の連絡先から担当者を確かめる
請求書の PDF が見つからない添付せずに下書きを作り、確認の一覧に印を付ける
入金額が請求額より多い案内の対象にせず、会計担当の確認の一覧へ
API が応答しない・混み合い時間をおいてやり直し、続けて失敗したら確認待ち
1回の実行が時間切れになる処理済みの印を見て、次の実行で続きから作る

最後の行は、Apps Script の上限から来ます。 公式の上限の表では、スクリプトの実行時間は1回あたり6分で、トリガーで動かした合計の実行時間は個人のアカウントで1日90分、Google Workspace のアカウントで1日6時間です。120件を1回で作ると、混み合いのやり直しが重なったときに6分を超えることがあります。30件ずつ作り、残りがあれば数分後に動く1回きりのトリガーで続きを作ります。 トリガーはユーザー・スクリプトごとに20個までとされているので、続きのトリガーは動いたら消します。

Step11

記録を残す

  • 実行の日時、対象の月、対象の会員の数、作った下書きの数、確認待ちの数
  • 会員ごとの段階と事情、そう決めた根拠(送付の記録の数、担当者を更新した日、入金額)
  • AIに渡した段階・事情、AIが返した JSON の全文(差し込む前のもの)
  • 検査の結果と、確認待ちにした理由
  • 担当が送った日時と、大きく直した段落と理由
  • そのとき差し込んだ会則の条文の版

2つ目で根拠を残すのは、会員から「なぜ2回目なのか」と聞かれたときのためです。 送付の記録の数で段階を決めているので、いつ何回目を送ったかをその場で答えられます。

最後の行は、会則が改正されたときのためです。 3回目の案内に添えた条文がどの版かが分かれば、改正の前後で案内を受けた会員を絞れます。

04実装レベルの3段階

最小構成:手元の Claude の画面に段階と事情を貼り、文面を作らせる / 1社ごとの文面の下書き
半自動化:上記+Apps Script で未納を拾い、段階と事情を決め、API で文面を作り、Gmail の下書きにする / 未納の抽出、段階と事情の判定、文面、差し込み、下書き
本格構成:上記+入金の記録を銀行の明細から取り込む仕組みとつなぎ、入金が届いた会員の下書きを自動で消す / 入れ違いの防止

最小構成では120件をさばけません。 1社ずつ貼り付けるので、確かめるための段階です。 本記事の想定は半自動化です。 月に1度まとめて作り、担当が数日かけて読んで送ります。1件10分が3分になるのはこの段階です。 差が大きいのは、①②の確かめがスクリプトに移り、③の文面づくりが「読んで直す」に変わるからです。 本格構成は、入れ違いが多い団体向けです。 下書きを作ってから送るまでの間に入金が届いた会員を、自動で外せます。ただし入金の取り込みは会計の仕組みに関わるので、 会計担当と顧問の税理士と相談してから進めてください。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
2 名
月間件数
120 件
1件あたり現在時間
10 分
1件あたり導入後時間
3 分
現在  120件 × 10分 ÷ 60 = 20 時間/月
導入後 120件 × 3分 ÷ 60 = 6 時間/月
月間削減時間
14h
削減率
70%
年間削減時間
168h
年間金額換算(時間単価2,400円)
40万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 会員企業や会員個人から年会費を受け、入会の月や年度の区切りに合わせて毎月どこかの会員に請求と案内が発生している業界団体・同窓会・協会の事務局。会員名簿と会費の請求・入金の記録を Google スプレッドシートで持ち、Gmail で会員とやり取りしている場合。未納の案内を1通ずつ書いており、担当者によって書き方や送る時期がばらつく場合。
向いていない
  1. 会費を口座振替やカードの自動の決済で集めており、未納がほとんど出ない団体。会員の管理を専用の会員管理サービスで行い、督促のメールもその機能で送れている場合。会員が数十人で、事務局長が電話一本で済ませられる場合。なお、会費を払わない会員の退会や資格の扱い、未納の会費を法的に請求するかどうかの判断はこの構成の対象外です。

07最小構成で試す方法

  1. 前月に案内を送った会員から15社を選ぶ(一部入金・担当者の交代・初めての未納・連続の未納・事情なしを混ぜ、3回目も入れる)
  2. その15社について、実際に送った案内のメールを手元に用意する
  3. 会員ごとに、段階と事情の名前だけを書いた材料を作る
  4. 手元の Claude の画面に、第7章のプロンプトと、1社ずつの材料を貼る
  5. 出てきた文面を、実際に送った案内と並べて、事務局の2人で読み比べる

15社は必ず事情をばらして選んでください。 事情なしの会員ばかりだと、3段落目の書き分けが試せません。

出てきた内容判断
実際の案内と遜色ないスクリプトでつなぐ段階に進む
金額や期限を直接書いてくる指示の書き方で直る。構成は有効
3回目で強い言葉を使う禁止の言葉を足し、段階ごとの調子を書き直す
一部入金の会員に全額未納のように書く事情の説明を足す

3行目が出ることは珍しくありません。 「最後のお願い」と指示すると、期限を過ぎたら何が起きるかを書き足そうとします。それは会則の条文の役目で、本文の役目ではないと、指示の中ではっきり分けてください。

08実装時につまずきやすいポイント

問題対策
入金の反映前に動いて、払った会員に届く状態の欄を見てから動く。 日付だけで動かさない
段階が飛ぶ・重なる送付の記録の数で決める。 期限からの日数で決めない
休会の相談中の会員に3回目が届く印を最初に見て確認待ちへ。理事が聞いた話も印にする
金額や期限を直接書いてくる記号以外の数字を検査で止める
3回目で退会や催告を書いてくる指示で禁じ、本文の語で検査する。条文は差し込む
手数料を引いた入金に未納の案内を送る決まりのシートに手数料の差の上限を持たせる
前の会員の値が残る値はスクリプトが差し込み、ひな形を手で書き換えない
担当者のアカウントでトリガーを作る作成者のアカウントで動く。会費窓口のアカウントで作る
下書きを作ってから送るまでに入金が届く送る前に入金の欄をもう一度見る
下書きが Gmail にたまる送った印を付け、月をまたいだ下書きは消す

上の3行が、この構成の失敗のほとんどです。 どれも「払った、あるいは事情のある会員に、筋違いの案内が届く」失敗で、AIの文面がどれだけ丁寧でも、宛先を選ぶ段階で誤れば取り返せません。 宛先の選び方は記録の数と印で決め、AIに任せないでください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 会員企業の名称、会費の担当者の氏名・部署・メールアドレス、会費の額と入金の状況、休会の相談や理事の対応といった事務局のメモです。

  1. 外部へ渡す範囲を、文面に必要なものまでに限る … Claude API に渡すのは段階と事情の名前と文面の決まりだけです。会員名・担当者名・金額・振込先・メモは渡しません。 記号で書かせて、差し込みは Google Workspace の中で行います
  2. 事務局のメモを AI に渡さない … 休会の相談や理事の対応は、確認待ちに分ける判定にだけ使います
  3. 送信を自動にしない … 下書きまでです。会員との関係に直接ひびく文書です
  4. 退会や法的な請求の判断を代替しない … 会費を納めない会員の扱いは、会則と理事会の決議で決まります。この構成が出すのは案内の下書きまでで、その先を AI の文面で予告しません
  5. API キーをスクリプトに直接書かない … スクリプトのプロパティに置き、スクリプトの編集権限を持つ人を事務局の担当に限ります
  6. 名簿の共有範囲を絞る … 会員企業の担当者の連絡先と未納の状況がまとまった表です。理事や委員にそのまま共有しないでください

誤りが起きた場合のリスクは、払った会員や事情のある会員に筋違いの案内を送ることと、金額や期限を誤って伝えることの2つです。前者は状態の欄と送付の記録と印で、後者は記号と検査で防ぎ、最後に担当が読んでから送ります。

10まず何から始めるか

1週目:送付の記録を作る

過去3か月に送った案内を、Gmail の送信済みから会員の番号・請求の番号・段階・送った日の表にします。これが段階を決める元の記録になります。

2週目:名簿の2つの列を足す

名簿に「担当者を更新した日」と「休会の相談の印」を足します。事務局の全員と理事に、休会の相談を受けたら印を付けるよう頼みます。

3週目:15社で試す

事情をばらして15社を選び、手元の Claude の画面で文面を作らせて、実際の案内と読み比べます。金額を直接書いていないか、3回目で強い言葉を使っていないかを最優先で見ます。

4週目:スクリプトで下書きまで作る

Apps Script で未納を拾い、段階と事情を決め、API で文面を作り、Gmail の下書きを作るところまで組みます。最初の月は、送る前に事務局の2人で全件を読み合わせます。

2か月目: 担当者の交代の会員への請求書の添付を足します。手数料の差の扱いを会計担当と決めます。3か月目以降: 1件あたりの確認時間を測り、3分を超える下書きの理由を見て、文面の決まりを直します。未納の案内が毎月決まった時期に、事情に合った文面で届くようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-15/最終更新:2026-10-15
確認した内容情報源確認日
時間主導型のトリガーが毎分から月1回まで動かせ、時刻がずれうること(9時の設定が9〜10時に動き、その時刻が保たれる)。インストール型のトリガーが作成者のアカウントで動くこと。失敗時にまとめのメールが届くことGoogle: Installable triggers2026-10-15
実行時間が1回6分、トリガーの合計実行時間が個人1日90分・Workspace 1日6時間、トリガーがユーザー・スクリプトごとに20個であることGoogle: Quotas for Google Services2026-10-15
createDraft が宛先・件名・本文と、添付・CC・HTML の本文・表示名・返信先の指定で下書きを作ること。https://mail.google.com/ のスコープが要ることGoogle: Class GmailApp2026-10-15
muteHttpExceptions を true にすると、失敗の応答でも例外を投げないことGoogle: Class UrlFetchApp2026-10-15
スクリプトのプロパティがスクリプトの利用者全員で共有され、スクリプトの間では共有されないことGoogle: Properties Service2026-10-15
構造化出力を output_config.format の json_schema で指定し、additionalProperties: false が必要なこと。数値の最小値・最大値の制約に対応しないこと。列挙型の値が大文字小文字だけ違って返りうることClaude: Structured outputs2026-10-15

会費を納めない会員の扱いや、未納の会費を請求する手続きは、会則と理事会、顧問の弁護士・税理士に確かめてください。 本記事は、未納の会員への案内の下書きづくりに絞って、公式のページで確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1664)についてのご相談はこちらから。

AI活用について相談する
目次