行政書士事務所が顧客の建設業・産業廃棄物の許可の更新と決算変更届の期限を台帳から拾い、Apps Script と Claude で案内のメールの下書きを作る
顧客の許可の台帳から、更新の期限と決算変更届の期限が近い顧客を Apps Script が毎月拾い、Claude が顧客ごとの案内のメールの下書きを作ります。職員は下書きを読んで直し、Gmail から送ります。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Zapier
- 対象業界
- その他/士業/建設
- 対象部門
- 総務
- 対象業務
- 台帳・マスタ管理/書類作成
- 主な課題
- 属人化している/書類作成に時間がかかる/期限・対応漏れが起きる
- AIで行う処理
- 生成
- 主な効果
- 品質標準化/工数削減/機会損失防止
- 導入難易度
- ★☆☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 月初に、事務の職員が台帳を満了の日で並べ替え、半年以内に満了する許可を目で拾う
- 決算月の列を見て、4か月以内に決算変更届の締切が来る顧客を拾う
- 顧客ごとに前回の案内のメールを Gmail で探し、それを写して日付と許可の種類を書き換える
- 許可の種類ごとに用意してもらう書類を、事務所の手引きの一覧から写す
- 所長に下書きを見せ、言い回しと日付を確かめてもらってから送る
- 送ったことを台帳の備考に手で書く
- 人新しい許可を受けたとき、事務の職員が台帳に許可の種類・許可番号・都道府県・満了の日を入れる。顧客の決算月を入れる
- 自動毎月1日の朝、Apps Script が台帳を読み、段ごとの期限に入った許可と、決算変更届の締切が近い顧客を拾う
- 自動顧客ごとに、満了の日・申請の締切・事務所に書類をもらう日・用意する書類の一覧を計算して束ねる
- 自動顧客名と担当者名を記号に置き換え、事実の束を Claude API に渡す
- 自動Claude が、日付と名前を記号のまま残した件名と本文を JSON で返す
- 自動Apps Script が記号を値に置き換え、日付の食い違いと記号の残りを検査して、Gmail の下書きを作る
- 自動確認の一覧に、顧客・段・期限・検査の結果を1行ずつ書く
- 人職員が確認の一覧の「要確認」から片付け、下書きを読んで直し、送る
- 人顧客から依頼を受けたら、台帳の状態を「受任済み」にする(以後の段の案内は止まる)
各工程の詳しい説明を読む
- 月初に、事務の職員が台帳を満了の日で並べ替え、半年以内に満了する許可を目で拾う
- 決算月の列を見て、4か月以内に決算変更届の締切が来る顧客を拾う
- 顧客ごとに前回の案内のメールを Gmail で探し、それを写して日付と許可の種類を書き換える
- 許可の種類ごとに用意してもらう書類を、事務所の手引きの一覧から写す
- 所長に下書きを見せ、言い回しと日付を確かめてもらってから送る
- 送ったことを台帳の備考に手で書く
(a)期限の案内が漏れる。 1番目と2番目は並べ替えと目視です。産業廃棄物の許可を3つの都道府県で持つ顧客は、台帳に3行あります。 1行だけ見て案内を出し、残りの2つの満了が近いことに気づかないことがあります。決算変更届は決算月から数えるので、並べ替えでは拾えず、毎月指で数えています。
(b)前回のメールを写すので、古い日付が残る。 3番目で前回の文面を写すと、本文のどこかに前回の満了の日や、もう要らない書類が残ります。 所長の確認で見つかればよいのですが、繁忙期は見落とされます。
(c)期限を覚えている人に頼っている。 「あの会社は今年が更新」「あそこは決算が9月」と覚えているのは、勤めの長い職員です。その職員が休むと、案内が1か月ずれます。 満了の30日前を過ぎてから依頼をもらっても、申請の準備が間に合いません。
(d)催促の文面が書きにくい。 書類がそろわない顧客への2度目、3度目の案内は、失礼にならず、しかし締切ははっきり伝える文面が要ります。職員によって書き方がばらばらで、所長が毎回直しています。
- 【人】 新しい許可を受けたとき、事務の職員が台帳に許可の種類・許可番号・都道府県・満了の日を入れる。顧客の決算月を入れる
- 【自動】 毎月1日の朝、Apps Script が台帳を読み、段ごとの期限に入った許可と、決算変更届の締切が近い顧客を拾う
- 【自動】 顧客ごとに、満了の日・申請の締切・事務所に書類をもらう日・用意する書類の一覧を計算して束ねる
- 【自動】 顧客名と担当者名を記号に置き換え、事実の束を Claude API に渡す
- 【自動】 Claude が、日付と名前を記号のまま残した件名と本文を JSON で返す
- 【自動】 Apps Script が記号を値に置き換え、日付の食い違いと記号の残りを検査して、Gmail の下書きを作る
- 【自動】 確認の一覧に、顧客・段・期限・検査の結果を1行ずつ書く
- 【人】 職員が確認の一覧の「要確認」から片付け、下書きを読んで直し、送る
- 【人】 顧客から依頼を受けたら、台帳の状態を「受任済み」にする(以後の段の案内は止まる)
2番目と3番目を Apps Script に置いているのが、この設計の土台です。 期限の計算は決まった規則で、AIに任せる理由がありません。 AIが日付を書くと、もっともらしい間違いが混ざります。
8番目は全件です。 案内は顧客の事業に関わり、送り先を間違えれば他社の許可の情報を漏らすことになります。送る前に人が読むことは省きません。 ただし読むのは、日付と書類が正しくそろった下書きです。
02今回想定するシステム構成
顧客の許可の台帳(許可の種類・番号・都道府県・満了の日・決算月) + 書類の一覧(許可の種類と段ごと)+ 都道府県ごとの締切の設定 + 案内の記録(Google スプレッドシート) │ ▼【トリガー】毎月1日の朝(時間主導型のトリガー) Google Apps Script ├──▶ 段ごとの期限に入った許可と決算変更届を拾う ├──▶ 満了の日・申請の締切・依頼の締切を計算する ├──▶ 顧客名・担当者名を記号に置き換える ▼ Claude API ── 記号入りの件名と本文を JSON で返す ▼ Google Apps Script ── 記号を値に置き換え、日付と記号の残りを検査 ├──▶ Gmail の下書き(顧客ごと) └──▶ 確認の一覧(スプレッドシート) ▼ 【人】要確認を片付け、下書きを読んで直し、送る
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Make、Zapier |
| 生成AI | Claude API(Messages API、構造化出力) | OpenAI API、Gemini API |
| 保管 | Google スプレッドシート(許可の台帳、書類の一覧、締切の設定、案内の記録、確認の一覧) | - |
| メール | Gmail(下書きを作るだけ。送るのは職員) | - |
新しく足すのは、Apps Script と、書類の一覧・締切の設定・案内の記録・確認の一覧の4つのシートです。 台帳はこれまでどおり職員が入れます。この構成はメールを送りません。 Gmail の下書きを作るところで止まります。
Apps Script を実行環境にしているのは、台帳もメールも Google の中にあるからです。 時間主導型のトリガーは毎分から月1回までの間隔で動かせ、月の何日に動かすかを指定できます。 サーバーを持たずに、月1回の洗い出しを組めます。
生成AIに渡すのは、記号に置き換えた事実だけです。 顧客名、担当者の名前、許可番号はAIに渡しません。AIに必要なのは、どの段の案内で、どの種類の許可で、どの書類を頼むかだけです。
03どうやって実装するのか
処理の起点を決める
毎月1日の朝に1回動かします。 時間主導型のトリガーで onMonthDay(1) と atHour(7) を指定します。公式の説明では、atHour() の例が「5時〜6時の間に動く」と書かれ、nearMinute() を指定しないと分はランダムに決まります。 7時ちょうどに動く前提にはせず、職員が出勤する9時までに終わっていればよい作りにします。
1日が土日でも動かします。 下書きは Gmail に残るだけなので、職員が月曜に見れば足ります。営業日に合わせて動かす日を変える仕組みは作りません。 作ると、祝日の扱いで動かない月が出ます。
トリガーは、作った人のアカウントで動きます。 公式は、インストール型のトリガーは作成した人のアカウントで実行されるとしています。事務所の共用のアカウント(案内の送り主になるアカウント)で作ります。 職員個人のアカウントで作ると、下書きがその職員の Gmail に入り、退職や異動で止まります。
失敗しても画面には出ません。 トリガーで動いた処理が失敗すると、所有者に「Summary of failures for Apps Script」という件名のメールが届きます。共用のアカウントの受信箱を誰が見るかを決めておきます。 あわせて、処理ログのシートに「どの顧客の行で止まったか」を日本語で書きます。
月の途中で台帳を直したときのために、手で動かせる関数も用意します。 新しく受任した顧客の満了が近いと分かったとき、その顧客の行だけで下書きを作り直せるようにします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 許可の台帳 | 顧客番号、許可の種類(建設業/産業廃棄物収集運搬業)、許可番号、都道府県、満了の日、状態(案内中/受任済み/不要) | スプレッドシート |
| 顧客の情報 | 顧客番号、会社名、担当者の名前、メールアドレス、決算月、顧客の区分(長年の顧客/新しい顧客) | スプレッドシート |
| 書類の一覧 | 許可の種類と段ごとに、顧客に用意してもらう書類の名前 | スプレッドシート(新しく作る) |
| 締切の設定 | 許可の種類・都道府県ごとに、満了の何日前までに顧客から書類をもらうか | スプレッドシート(新しく作る) |
| 案内の記録 | 顧客番号、許可の行、段、下書きを作った日、送った日 | スプレッドシート(新しく作る) |
質を決めるのは、締切の設定と案内の記録です。 締切の設定が無ければ、「満了の何日前に書類をそろえれば間に合うか」を計算できません。案内の記録が無ければ、同じ段の案内を毎月作り続けます。
締切の設定は、法令の期限そのものではなく、事務所の都合を入れます。 建設業許可の更新の申請は満了の30日前までですが、事務所が書類を作って顧客に押印をもらうには、さらに数週間かかります。 「満了の60日前までに書類をもらう」のように、逆算した日を許可の種類ごとに入れます。
顧客の会社名と担当者の名前は台帳にありますが、AIには渡しません。 渡すのは段・許可の種類・書類の名前・顧客の区分だけで、宛名は下書きを作るときに Apps Script が差し込みます。
データの取得方法を決める
すべて同じスプレッドシートの中にあるので、Apps Script のスプレッドシートのサービスで読むだけです。 外のシステムから取ってくるものはありません。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 満了の日が半年以内の許可の行 | 許可の台帳 | 段の判定 |
| 決算月 | 顧客の情報 | 決算変更届の締切の計算 |
| 書類の名前 | 書類の一覧(許可の種類と段で引く) | 本文の書類の箇条 |
| 依頼の締切の日数 | 締切の設定(許可の種類と都道府県で引く) | 事務所に書類をもらう日の計算 |
| 過去の案内 | 案内の記録 | 同じ段の重複の防止 |
段は次の規則で決めます。
| 段 | 条件 | 文面の目的 |
|---|---|---|
| 更新・初回 | 満了の日まで180日以内、まだこの段の記録が無い | 更新の時期が来たことと、準備の流れ |
| 更新・依頼 | 満了の日まで90日以内 | 用意する書類の依頼と、依頼の締切 |
| 更新・催促 | 満了の日まで45日以内で、状態が「受任済み」でない | 締切が近いことの確認と、連絡のお願い |
| 決算変更届 | 決算月の末日から数えて1か月を過ぎ、まだその年度の記録が無い | 決算の書類の依頼と、提出の期限 |
決算変更届の期限は、事業年度の終わりから4か月以内です。 決算月の末日に4か月を足した日を期限とし、決算が終わって1か月ほどで税理士の決算書ができるころに案内を出します。 決算月を変えた顧客は、台帳の決算月を直さないと期限がずれます。
同じ顧客に複数の許可があれば、1通にまとめます。 建設業許可と、2つの都道府県の産業廃棄物の許可が同じ月に段に入ったなら、3つを1通の下書きの中で箇条に分けて書きます。 1許可1通にすると、顧客には同じ日に3通届きます。
AIへ渡す前に整形する
- 状態で絞る … 「受任済み」と「不要」(廃業・許可の取り下げ)の行は外します
- 段を決める … 満了の日と今日の差から、上の表の段を1つ決めます。複数の段に当たるときは、近いほうの段にします
- 重複を外す … 案内の記録に同じ許可・同じ段の行があれば外します
- 日付を計算する … 満了の日、申請の締切(建設業許可は満了の30日前)、依頼の締切(締切の設定から逆算)を
yyyy年M月d日の形にします - 依頼の締切が過ぎていないか見る … 過ぎていれば、その顧客は下書きを作らず「要電話」として確認の一覧に出します
- 顧客ごとに束ねる … 同じ顧客の行を1つにまとめ、許可ごとの事実を並べます
- 記号に置き換える … 会社名を
{{会社名}}、担当者の名前を{{担当者}}、日付を{{満了日_1}}{{依頼締切_1}}のような番号付きの記号にします
5番目を省かないでください。 案内が何かの理由で遅れ、依頼の締切をもう過ぎている顧客にメールを送ると、「○日までにお送りください」と過ぎた日を書いた文面が届きます。 その顧客は、メールではなく電話で話す相手です。
7番目の記号に番号を付けるのは、許可が複数あるためです。 建設業許可の満了の日と、産業廃棄物の許可の満了の日を、どの箇条にどちらを書くかをAIに選ばせません。 箇条の順番と記号の番号を Apps Script の側で決めておきます。
AIに処理させる
させるのは、記号の入った事実の束から、案内のメールの件名と本文を作ることだけです。
| させること | 中身 |
|---|---|
| 件名を作る | 段と許可の種類が分かる件名。例「建設業許可の更新のご案内」 |
| 書き出しを整える | 顧客の区分(長年の顧客/新しい顧客)に合わせた挨拶 |
| 許可ごとの箇条を書く | 許可の種類、満了日の記号、依頼締切の記号、用意する書類 |
| 段に合わせた結びを書く | 初回は準備の流れ、依頼は書類の送り方、催促は連絡のお願い |
| 気になる点を挙げる | 事実の束で食い違って見える点(例:催促の段なのに書類の一覧が空) |
AIに書かせないことのほうが大事です。
| させないこと | 理由 |
|---|---|
| 日付を数字で書く | 計算は Apps Script。数字の日付が本文にあれば検査で止める |
| 許可の要件や必要な手続きの説明を足す | 事実の束に無い法令の説明は、顧客ごとの事情と合わない |
| 報酬や費用の金額を書く | 見積は所長が顧客ごとに決める |
| 「更新できます」と請け合う | 要件を満たしているかは、書類を見て行政書士が判断する |
| 書類の一覧に無い書類を足す | 事務所の手引きの一覧だけを使う |
2行目がいちばん起きやすい失敗です。 AIは親切に「なお、更新には経営業務の管理責任者の要件を……」と書き足します。一般論としては正しくても、その顧客の事情に合うとは限らず、行政書士の確認を経ない法令の説明になります。 書いてよいのは、事実の束にある書類の名前と段の目的だけです。
指示内容を固定する
あなたは行政書士事務所の事務の職員として、顧客に送る案内のメールの下書きを書きます。
渡す「事実の束」だけを使って書いてください。
【書き方】
- 宛名は {{会社名}} {{担当者}} 様 と書いてください。名前を推測しないでください。
- 日付は、事実の束にある記号({{満了日_1}} {{依頼締切_1}} など)をそのまま本文に置いてください。
数字で日付を書かないでください。曜日も書かないでください。
- 許可が複数あるときは、事実の束の番号の順に箇条を分けてください。
箇条1には _1 の記号だけ、箇条2には _2 の記号だけを使ってください。
- 用意する書類は、事実の束の documents にあるものだけを、そのままの名前で並べてください。
- 段(stage)ごとの目的:
renewal_first …… 更新の時期が近いことと、これから書類をお願いすることを伝える
renewal_request …… 用意する書類と、事務所に届けてほしい日(依頼締切)をはっきり伝える
renewal_remind …… 締切が近いことを丁寧に伝え、状況を返信か電話で知らせてほしいと頼む
annual_report …… 決算が終わったことにふれ、決算の書類の送付と期限を伝える
- 顧客の区分が new のときは、案内を事務所から送る理由を一文添えてください。
【書かないこと】
- 許可の要件、手続きの流れ、法令の条文の説明
- 報酬・費用・手数料の金額
- 「必ず更新できます」「問題ありません」のような請け合い
- 事実の束に無い書類、無い許可
【notes】
事実の束の中で食い違って見えるもの、文面を書くのに足りないものがあれば、
notes に短く書いてください。無ければ空の配列にしてください。
【事実の束】{facts_json}
「数字で日付を書かない」を明記しないと、AIは記号を値に見立てて「令和○年○月○日」と書き直すことがあります。 書き直された日付は、正しいかどうか誰にも分かりません。記号のまま返させ、値は後から機械が入れます。
「箇条1には _1 の記号だけ」も同じ理由です。 許可が2つあるとき、AIが満了の日の記号を入れ違えると、建設業許可の箇条に産業廃棄物の許可の満了の日が入ります。 検査で拾えるよう、箇条と記号の番号を対応させます。
出力形式を固定する
Claude API の構造化出力で、次の形の JSON を受け取ります。 スキーマは output_config.format に type: "json_schema" で渡します。
{
"subject": "建設業許可の更新と決算変更届のご案内",
"body": "{{会社名}}\n{{担当者}} 様\n\nいつもお世話になっております。…\n\n1. 建設業許可({{許可番号_1}})\n 有効期間の満了日:{{満了日_1}}\n 書類のご送付のお願い:{{依頼締切_1}}まで\n ・…",
"placeholders_used": ["{{会社名}}", "{{担当者}}", "{{満了日_1}}", "{{依頼締切_1}}"],
"notes": []
}
構造化出力を使う理由は2つです。 1つは、件名と本文と使った記号を別の項目で受け取れることです。本文を正規表現で切り分けるより確実です。もう1つは、placeholders_used と事実の束の記号を突き合わせられることです。
スキーマに文字数の上限は書きません。 公式の説明では、文字列の長さの制約(minLength・maxLength)や数値の範囲の制約は非対応で、使うと400のエラーになります。 本文の長さは Apps Script の検査で見ます。組み立てたスキーマは最後に使ってから24時間保持され、初回の呼び出しだけ時間がかかります。
Apps Script の検査は次のとおりです。
| 検査 | 引っかかったとき |
|---|---|
| 事実の束の記号が本文にすべてあるか | 抜けた記号を確認の一覧に出し、「要確認」 |
| 事実の束に無い記号が本文にあるか | 「要確認」(入れ違いの恐れ) |
| 置き換えた後の本文に、数字の日付が事実の束の日付以外で出ていないか | 「要確認」 |
| 箇条の番号と記号の番号が合っているか | 「要確認」 |
notes が空でない | notes を確認の一覧に写し、「要確認」 |
| 本文が1,500字を超える | 「要確認」(書き足しの恐れ) |
3行目が、AIが日付を書いてしまったときの網です。 記号を置き換えた後の本文から、年・月・日 の並びと / 区切りの日付を拾い、事実の束にある日付と一つずつ照らします。 束に無い日付が1つでもあれば下書きは作りますが、確認の一覧で赤くします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 許可の台帳・顧客の情報 | スプレッドシートのサービスで読む | 段と期限の計算の材料 |
| Claude API | UrlFetchApp で Messages API を呼ぶ | 件名と本文の JSON |
| Gmail | GmailApp.createDraft() | 顧客ごとの下書き |
| 確認の一覧・案内の記録 | スプレッドシートのサービスで書く | 検査の結果と、段の記録 |
下書きは GmailApp.createDraft(recipient, subject, body, options) で作ります。 オプションには cc・bcc・replyTo・name などがあり、name に事務所名を入れて送り主の表示をそろえます。 Gmail の権限(https://mail.google.com/)が要るので、初回の承認は共用のアカウントで行います。
Claude API の鍵はスクリプトのプロパティに置きます。 コードに直接書くと、スクリプトを共有したときに鍵も渡ります。
呼び出しの回数は月に数十回です。 Apps Script の URL の取得の上限は個人のアカウントで1日20,000回、Workspace のアカウントで1日100,000回とされ、この構成で上限に当たることはありません。 気をつけるのは1回の実行が6分までという上限のほうで、顧客が多い月は途中で止まりえます。処理した顧客の行に印を付け、止まったら続きから動く作りにします。
人が確認する
- 確認の一覧の「要確認」と「要電話」から見る … 記号の抜け、日付の食い違い、
notesのある顧客。「要電話」は依頼の締切を過ぎた顧客で、メールは作っていません - 下書きの宛先を確かめる … 顧客の情報のメールアドレスが、担当者の交代で古くなっていないか
- 日付と許可番号を台帳と見比べる … 置き換えた値が台帳の行と同じか。1通に許可が複数あるときは箇条ごとに見ます
- 書類の一覧が段に合っているか見る … 顧客ごとの事情(役員の交代、営業所の移転)で書類が増えるなら書き足します
- 送る … 職員が Gmail から送り、案内の記録に送った日を入れます
3番目を省かないでください。 検査は記号と日付の形を見ていますが、台帳の満了の日そのものが間違っていれば、正しく置き換えた間違った日付が届きます。 許可通知書の写しと台帳を年に1回見比べることとあわせて、送る前に一度は目で見ます。
目標は、60件をならして1件3分です。 「要確認」の無い下書きは2分ほどで読んで送れ、時間を使うのは要確認の数件と、書類を書き足す顧客です。
例外に対処する
| 起きること | 対応 |
|---|---|
| 依頼の締切を過ぎている | 下書きを作らず「要電話」。所長か行政書士が電話する |
| 満了の日が空欄の許可の行 | 段を決めず、確認の一覧に「満了日未入力」 |
| 顧客のメールアドレスが無い | 下書きを作らず「郵送か電話」と出す |
| Claude API がエラーを返す | 1回だけやり直し、だめなら確認の一覧に「生成失敗」。その顧客の行に印を付けない(翌日の手動実行で拾う) |
| 本文に記号の抜け・余り | 下書きは作り、「要確認」 |
| 事実の束に無い日付が本文にある | 下書きは作り、赤の「要確認」 |
| 1回の実行が6分を超えそう | 処理した顧客に印を付けて終わり、続きは次の実行で |
| 状態が「受任済み」なのに催促の段に入る | 外す(前処理の1番目)。受任済みの記録漏れを疑い、一覧に出す |
| 顧客が廃業・許可を返した | 状態を「不要」にし、以後は拾わない |
1行目が、この構成でいちばん大事な分かれ道です。 締切を過ぎた顧客に機械的なメールを送ると、顧客は「まだ間に合う」と受け取ります。 間に合うかどうかは行政書士が都道府県の窓口の事情も含めて判断することで、メールの文面で決めることではありません。
記録を残す
- 実行の日時、読んだ台帳の行の数、段に入った許可の数、作った下書きの数
- 顧客ごとの事実の束(記号に置き換えた後のもの)と、Claude が返した JSON
- 検査の結果(記号の抜け・余り、日付の食い違い、
notes) - 職員が下書きを直したかどうかと、直した箇所の種類(書類の追加、言い回し、日付)
- 送った日と、顧客から依頼を受けた日
- 「要電話」になった顧客と、電話した日と結果
4つ目が、指示文を直す材料になります。 職員が毎回同じ言い回しを直しているなら、それはプロンプトの段の目的の書き方を変える合図です。 日付を直しているなら、台帳か締切の設定に誤りがあります。
5つ目と6つ目を並べると、段の時期が合っているかが分かります。 初回の案内から依頼までに毎回4か月以上かかる顧客が多いなら、初回の段を180日より前に出すことを考えます。
04実装レベルの3段階
本記事の想定は半自動化です。 案内を送るのは職員で、受任済みの印も職員が付けます。洗い出しと計算と下書きが自動になれば、月の作業の大半は消えます。 半自動化で、1件12分が3分になります。 差が大きいのは、前回のメールを探して写し、日付と書類を書き換える作業が、案内の作業の半分を占めていたからです。 本格構成は、顧客の返信の読み取りが入るので一段難しくなります。 返信の中身から「依頼する」「今回は他に頼む」を見分けるのは判断を含みます。半自動化を半年回し、職員が付ける受任の印が漏れなく付くようになってから考えれば十分です。
05工数削減シミュレーション
導入後 60件 × 3分 ÷ 60 = 3 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 建設業許可・産業廃棄物の収集運搬業の許可など、有効期間のある許可の申請を受け持った顧客を百社から数百社かかえ、更新と毎年の届出の時期の案内を事務所から出している行政書士事務所。顧客の台帳を Google スプレッドシートで持ち、Gmail で顧客とやり取りしている場合。案内を所長や古くからいる職員の記憶と手帳に頼っていて、担当の交代や繁忙期に案内が遅れたことがある場合。
- 顧客が数十社で、許可の期限を所長が全部覚えていて案内が遅れたことが無い事務所。顧客の管理を専用の業務システムで行っていて、期限の通知と文面の作成がその機能で済んでいる場合。顧客とのやり取りが電話と紙の郵送だけで、メールの宛先を持っていない場合。なお、許可の要件を満たしているかの判断、申請の受任の可否、報酬の見積は、この構成の対象外です。
07最小構成で試す方法
- 台帳から、来月から半年のあいだに満了する許可を10件、決算変更届の時期が来る顧客を10社選ぶ
- それぞれについて、満了の日・依頼の締切・用意する書類を手で書き出す(会社名と担当者の名前は書かない)
- 手元の Claude の画面に、第7章のプロンプトと、記号に置き換えた事実を1件ずつ貼る
- 返ってきた文面に数字の日付が混ざっていないか、書類の一覧に無いものが足されていないかを見る
- 職員がこれまで送った同じ段の案内と並べ、所長に「直さずに送れるか」を聞く
20件で十分です。 確かめたいのは、「記号のまま返してくれるか」と「法令の説明を書き足さないか」の2つです。
| 出てきた内容 | 判断 |
|---|---|
| 記号のまま返り、所長が少し直せば送れる | Apps Script で台帳から事実の束を作る段階に進む |
| 日付を数字に書き直す | 指示の書き方で直る。「数字で日付を書かない」を前に出す |
| 許可の要件の説明を書き足す | 「書かないこと」を具体的に足す。構成は有効 |
3行目はよく出ます。 失敗ではなく、これまで職員が案内に何を書いて、何を書かずにいたかが言葉になるということです。書かないことの一覧は、事務所の案内の決まりとして残ります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| AIが日付を数字で書き直す | 記号のまま返させ、置き換えた後の本文の日付を事実の束と照らす |
| 許可が複数ある顧客で日付が入れ違う | 箇条の番号と記号の番号を対応させ、検査で見る |
| 締切を過ぎた顧客に案内が届く | 前処理で「要電話」に分け、下書きを作らない |
| 同じ段の案内を毎月作る | 案内の記録で同じ許可・同じ段を外す |
| 受任済みなのに催促が出る | 受任の印を付ける手順を決め、催促の段では受任の記録漏れを疑う |
| 法令の説明を書き足す | 「書かないこと」を具体的に並べる |
| 決算月を変えた顧客の期限がずれる | 決算月の変更を台帳の更新の手順に入れる |
| 産業廃棄物の許可の5年と7年を取り違える | 満了の日を許可通知書から写す。年数から計算しない |
| 1回の実行が6分で止まる | 処理した顧客に印を付け、続きから動く |
| 職員個人のアカウントでトリガーを作る | 共用のアカウントで作る |
| 失敗のメールを誰も見ない | 共用のアカウントの受信箱の当番を決め、処理ログにも書く |
上の3行が、この構成の失敗のほとんどです。 どれも「日付をどこで決めるか」から起きます。日付は台帳と Apps Script だけで決め、AIは記号を置くだけにしておけば、残りは運用の注意で足ります。
8行目は、とくに気を付けてください。 優良の認定を受けて更新された許可は7年、それ以外は5年とされていますが、台帳に「取得日」だけを入れて満了の日を計算させると、認定の有無で2年ずれます。 満了の日は許可通知書から写します。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 顧客の会社名、担当者の名前とメールアドレス、許可番号、許可の満了の日、決算月です。行政書士には守秘の義務があり、顧客が許可を持っていることや更新の時期も、顧客の事業の情報です。
- AIに顧客を特定できる情報を渡さない … 会社名・担当者の名前・許可番号は記号にして渡し、宛名と番号は下書きを作るときに Apps Script が差し込みます
- 送るのは人 … 宛先を間違えれば、他社の許可の情報を漏らすことになります。下書きを読んで宛先を確かめてから送ります
- 法令の説明をAIに書かせない … 許可の要件や手続きの説明は、行政書士が顧客の事情を見て行うものです。案内は期限と書類の依頼にとどめます
- 締切を過ぎた顧客はメールで済ませない … 間に合うかどうかの判断を、機械の文面に任せないでください
- 鍵とアカウントを共用で持つ … API の鍵はスクリプトのプロパティに置き、トリガーは事務所の共用のアカウントで作ります。職員の退職で止まらないようにします
- 利用者の規約を確かめる … 生成AIの製品を替えるときは、その製品の利用規約とデータの扱いを先に確かめてください
誤りが起きた場合のリスクは、案内が漏れて許可の満了に間に合わないことと、誤った日付や宛先で案内が届くことの2つです。 前者は台帳の満了の日と案内の記録で防ぎ、後者は日付を記号にすることと、人が読んで送ることで防ぎます。
10まず何から始めるか
1週目:台帳の満了の日と決算月をそろえる
許可通知書の写しを見ながら、許可ごとの満了の日と、顧客の決算月を台帳にそろえます。産業廃棄物の許可は都道府県ごとに1行にします。全部を一度に埋められなければ、満了が1年以内の許可から埋めます。
2週目:20件で試す
第8章のとおり、満了が近い10件と決算変更届の10社で、記号に置き換えた事実を手元の Claude の画面に貼ります。数字の日付を書かないか、法令の説明を足さないかを最優先で見ます。
3週目:書類の一覧と締切の設定を作る
行政書士と一緒に、許可の種類と段ごとの書類の名前と、都道府県ごとの依頼の締切の日数を表にします。ここが決まらないうちに Apps Script を組むと、依頼の締切が書けません。
4週目:Apps Script で下書きまでをつなぐ
台帳から段を決め、Claude を呼び、Gmail の下書きと確認の一覧を作るところまで作ります。最初の月は所長が全件の下書きを読み、直した箇所を記録します。
2か月目以降: 案内の記録と受任の印の付け方を固め、要確認の割合と直した箇所の種類を毎月見ます。職員が下書きを読んで送るだけで月の案内が終わり、「あの会社の更新はいつだったか」と誰かに聞かなくてよくなった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 建設業の許可は5年ごとに更新を受けなければ効力を失うこと(第3条第3項)。更新の申請中に満了しても処分までは従前の許可が効力を持つこと(同第4項)。許可を受けた建設業者が毎事業年度経過後4か月以内に決算の書類を出すこと(第11条第2項) | e-Gov 法令API: 建設業法 | 2026-10-28 |
| 許可の更新を受けようとする者は、有効期間満了の日の30日前までに許可申請書を出すこと(第5条) | e-Gov 法令API: 建設業法施行規則 | 2026-10-28 |
| 産業廃棄物収集運搬業の許可の更新期間が、新たに許可を受けた者は5年、優れた能力と実績を有すると認められて更新を受けた者は7年、それ以外の更新は5年であること(第6条の9) | e-Gov 法令API: 廃棄物の処理及び清掃に関する法律施行令 | 2026-10-28 |
| インストール型のトリガーは作成した人のアカウントで実行されること。時間主導型のトリガーが毎分から月1回まで動かせること。失敗すると「Summary of failures for Apps Script」のメールが届くこと | Google for Developers: Installable triggers | 2026-10-28 |
onMonthDay() で月の日を指定できること。atHour() の例が「5時〜6時の間に動く」と書かれていること。nearMinute() を指定しないと分がランダムになること | Google for Developers: ClockTriggerBuilder | 2026-10-28 |
| 1回の実行が6分まで、URL の取得が個人のアカウントで1日20,000回・Workspace で1日100,000回であること | Google for Developers: Quotas for Google Services | 2026-10-28 |
GmailApp.createDraft(recipient, subject, body, options) で下書きを作れ、cc・bcc・name・replyTo などのオプションがあること。https://mail.google.com/ の権限が要ること | Google for Developers: Class GmailApp | 2026-10-28 |
構造化出力を output_config.format に type: "json_schema" で指定すること。数値の範囲と文字列の長さの制約は非対応で400になること。組み立てた結果が最後の利用から24時間保持されること | Claude API Docs: Structured outputs | 2026-10-28 |
更新の申請を事務所に頼んでもらう締切、許可の要件の確認、受任の可否は、行政書士が顧客ごとに判断してください。 本記事は公開されている法令と仕様で確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-2218)についてのご相談はこちらから。
