子会社から毎月届く資金繰り表を点検し、残高の不一致・前月の見込みとの大きな差・資金ショートの懸念を洗い出して照会文の案を作る
子会社から毎月届く資金繰り表を、届いた日のうちに点検します。残高のつながりや見込みとの差はスクリプトが数え、AI は差の1つずつについて子会社のコメントで説明が足りているかを判定し、照会文の案を作ります。担当者は照会の要るものだけを見ます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate
- 対象業界
- 商社/小売/物流/製造
- 対象部門
- 財務
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 判断に時間がかかる/属人化している/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/品質標準化/工数削減
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 必須
01導入前 / 導入後の業務フロー
- 第5営業日の夕方から、担当者が子会社のスプレッドシートを1社ずつ開く
- 期首の残高が、前月の資金繰り表の期末の残高と同じかを見る
- 期首+収入−支出=期末になっているかを電卓で確かめる
- 期末の残高を、口座の残高の一覧と照らす
- 前月の資金繰り表を開き、当月の見込みと当月の実績を科目ごとに見比べる
- 差の大きい科目のコメントを読み、照会するかを決める
- 先3か月の見込みの期末の残高が、子会社ごとに決めた最低の残高を下回っていないかを見る
- 照会の要るものについて、子会社の経理にメールを書く
- 人子会社の経理が、いまと同じスプレッドシートに記入し、提出の欄に印を付ける
- 自動Apps Script が1時間ごとに共有のフォルダを見て、提出の印が付いて点検していない資金繰り表を拾う
- 自動残高のつながり、計算、口座の残高との一致を確かめる
- 自動前月の資金繰り表の見込みと当月の実績を科目ごとに比べ、会社ごとの基準を超える差を拾う
- 自動先3か月の見込みの期末の残高が、最低の残高を下回る月を拾う
- 自動拾った差と、その行のコメントを Gemini API に渡す
- 自動AI が、差の1つずつについて説明が足りているかを判定し、照会文の案を作る
- 自動点検の結果を、点検の一覧のシートに書き、担当者に知らせる
- 人担当者が、計算の不一致・資金不足の懸念・説明不足のものを見て、照会するかを決める
- 人照会文の案を直し、子会社の経理に送る
各工程の詳しい説明を読む
- 第5営業日の夕方から、担当者が子会社のスプレッドシートを1社ずつ開く
- 期首の残高が、前月の資金繰り表の期末の残高と同じかを見る
- 期首+収入−支出=期末になっているかを電卓で確かめる
- 期末の残高を、口座の残高の一覧と照らす
- 前月の資金繰り表を開き、当月の見込みと当月の実績を科目ごとに見比べる
- 差の大きい科目のコメントを読み、照会するかを決める
- 先3か月の見込みの期末の残高が、子会社ごとに決めた最低の残高を下回っていないかを見る
- 照会の要るものについて、子会社の経理にメールを書く
(a)検算に時間がとられる。 2番から4番は、計算が合っているかを見るだけの作業です。それでも30社の4か月分の行を見るので、ここだけで1社20分かかります。 そして、合っていない会社はほとんどありません。
(b)照会するかの判断が人によって違う。 6番は、差の金額とコメントを見て決めます。ベテランの担当者は「この会社のこの書き方は、ちゃんと分かっている」と読めますが、もう1人は迷って全部照会します。 照会を受ける子会社から見ると、月によって聞かれ方が違います。
(c)見込みの外れが翌月まで分からない。 5番の見比べは、前月の資金繰り表を開かなければできません。忙しい月は省かれ、3か月続けて入金の見込みが外れている会社に、誰も気づかないことがあります。
(d)資金不足の懸念が埋もれる。 7番は最後に見るので、時間が足りない月ほど粗くなります。見込みの残高が細っている会社を、月の半ばになって知ることがあります。
- 【人】 子会社の経理が、いまと同じスプレッドシートに記入し、提出の欄に印を付ける
- 【自動】 Apps Script が1時間ごとに共有のフォルダを見て、提出の印が付いて点検していない資金繰り表を拾う
- 【自動】 残高のつながり、計算、口座の残高との一致を確かめる
- 【自動】 前月の資金繰り表の見込みと当月の実績を科目ごとに比べ、会社ごとの基準を超える差を拾う
- 【自動】 先3か月の見込みの期末の残高が、最低の残高を下回る月を拾う
- 【自動】 拾った差と、その行のコメントを Gemini API に渡す
- 【自動】 AI が、差の1つずつについて説明が足りているかを判定し、照会文の案を作る
- 【自動】 点検の結果を、点検の一覧のシートに書き、担当者に知らせる
- 【人】 担当者が、計算の不一致・資金不足の懸念・説明不足のものを見て、照会するかを決める
- 【人】 照会文の案を直し、子会社の経理に送る
3番と4番と5番は、AI を通しません。 数字の点検は、スクリプトの計算のほうが確実で、AI に任せる理由がありません。 AI が見るのは、スクリプトが拾った差の説明だけです。
9番目は省けません。 子会社への照会は、子会社の経理との関係に関わります。照会文を自動で送ることはしません。 その代わり、担当者が見るのは30社の全部ではなく、判定で照会が要るとされた項目と、計算の不一致と資金不足の懸念だけになります。
02今回想定するシステム構成
子会社の経理が資金繰り表に記入し、提出の欄に印を付ける ▼【トリガー】1時間ごと(時間主導型) Google Apps Script ├──▶ 提出済みで未点検の資金繰り表を拾う ├──▶ 数字の点検(スクリプトの計算) │ 残高のつながり/計算/口座の残高との一致 │ 前月の見込みとの差/最低の残高を下回る月 ├──▶ Gemini API(構造化出力) │ 差ごとの説明の判定/照会文の案 ├──▶ 点検の一覧のシートに書く └──▶ MailApp で担当者へ ▼ 【人が照会するかを決め、子会社へ送る】
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Make、Power Automate |
| 生成AI | Gemini API(有料の利用枠、構造化出力) | Claude API、OpenAI API |
| 保管 | Google スプレッドシート(資金繰り表、口座の残高の一覧、会社ごとの基準、点検の一覧) | - |
| 通知 | Gmail(MailApp) | Google Chat |
新しく足すのは、Apps Script と、会社ごとの基準のシートと、点検の一覧のシートだけです。 資金繰り表の書式と共有のフォルダは、いまのものを使います。会計のシステムや銀行のサービスには、この構成からつなぎません。 口座の残高の一覧は、財務部がいまと同じやり方で作り、同じフォルダに置きます。
Apps Script は、点検の一覧のスプレッドシートに付けるスクリプトとして書きます。 時間主導型のトリガーで1時間ごとに動かします。公式のページでは、時間主導型のトリガーは everyHours() で何時間ごとかを指定でき、atHour() で時刻を指定した場合はその1時間のあいだのどこかで動くとされています。提出を見張る用途なので、分単位の正確さは要りません。
AI の処理は Gemini API の構造化出力で行います。 公式のページでは、Interactions の API(/v1beta/interactions)の response_format に、type を "text"、mime_type を "application/json" とし、schema に JSON Schema を渡す書き方が示されています。スキーマでは enum に加えて、数値の minimum・maximum も使えます。 ただし、公式のページは出力は構文として正しい JSON でも、中身が正しいとは限らないので、アプリケーションの側で値を確かめるよう勧めています。
使うのは有料の利用枠です。 Gemini API の利用規約では、無料の利用枠に送った内容は製品の改善に使われ、人が読むことがあるとされ、機密の情報を無料の利用枠に送らないよう求めています。有料の利用枠では、プロンプトと応答を製品の改善に使わないとされています。資金繰り表は機密の情報なので、無料の利用枠の API キーでは動かしません。
03どうやって実装するのか
処理の起点を決める
1時間ごとに動く時間主導型のトリガーを起点にします。 ScriptApp.newTrigger() に timeBased()・everyHours(1) を続けて作ります。動くたびに共有のフォルダの資金繰り表を見て、提出の欄に印があり、点検の一覧にまだ載っていないものを拾います。
子会社のファイルの編集をきっかけにしないのは、子会社が記入の途中で何度も保存するためです。 編集のたびに点検すると、書きかけの数字で照会文の案ができてしまいます。提出の印を、子会社の経理が「出しました」と言う合図にします。
提出のあとに子会社が数字を直すこともあります。 そこで、点検の一覧には点検したときのファイルの最終更新の日時を書き、次に見たときに更新されていれば「提出後に更新あり」として点検し直します。
提出期限の翌朝には、別のトリガーで未提出の会社を担当者に知らせます。 onMonthDay() は日付の指定なので、第5営業日のような営業日の指定には使えません。毎朝動くトリガーにして、スクリプトの中で営業日の一覧と照らします。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 当月の資金繰り表 | 当月の実績と先3か月の見込み、科目ごとの金額、コメントの列、提出の欄 | 子会社ごとのスプレッドシート |
| 前月の資金繰り表 | 前月の期末の残高と、前月に出した当月の見込み | 前月の版(点検の時に保存した写し) |
| 口座の残高の一覧 | 子会社ごと・口座ごとの月末の残高 | 財務部が作る一覧のシート |
| 会社ごとの基準 | 差を拾う金額と率、最低の残高、通貨、決算月 | 会社ごとの基準のシート |
| 過去の照会の記録 | 過去3か月に照会した科目と、子会社の回答の要旨 | 点検の一覧のシート |
質を決めるのは、会社ごとの基準です。 月の入出金が数千万円の会社と数十億円の会社で、同じ金額の基準を使うと、小さい会社は何でも拾い、大きい会社は何も拾いません。 そこで、差を拾う基準を金額と率の両方で持ち、どちらも超えたものだけを拾います。
最低の残高も、会社ごとに決めます。 「月の支出の1か月分」のような決め方が多いですが、季節で支出が大きく変わる会社や、親会社からの借入で回している会社は別の決め方になります。 財務部が会社ごとに決めて、シートに書きます。
前月の版は、点検のたびに写しを残します。 子会社のファイルは毎月上書きされるので、前月に出された見込みは、写しを取っておかないと消えます。 第3章の(c)が起きていた理由の1つです。
データの取得方法を決める
| 取るもの | どこから | どう取るか |
|---|---|---|
| 提出済みのファイル | 共有のフォルダ | フォルダの中のファイルを順に開き、提出の欄を読む |
| 科目ごとの金額とコメント | 資金繰り表のシート | 決まった範囲を一度に読む |
| 前月の見込み | 前月の写し | 同じ範囲を読む |
| 口座の残高 | 一覧のシート | 子会社のコードで絞る |
| 基準と過去の照会 | 各シート | 実行の最初に読む |
書式が統一されているので、読む範囲は固定できます。 ただし、子会社が行を足したり消したりすると、範囲がずれます。 読む前に、科目の名前の列が決まった並びになっているかを確かめ、ずれていれば点検せずに担当者に知らせます。
1社ごとの処理は、次の順で行います。
1. 科目の名前の列が決まった並びかを確かめる(ずれていれば「書式の崩れ」で止める)
2. 数字の点検をする
C1 期首の残高 = 前月の写しの期末の残高
C2 各月の 期首+収入計−支出計 = 期末
C3 収入計・支出計 = 科目の合計
C4 当月の期末の残高 = 口座の残高の合計
C5 当月の実績と、前月の写しの当月の見込みの差(科目ごと)
C6 先3か月の見込みの期末の残高と、最低の残高
3. C5 で基準を超えた科目と C6 で下回った月を、差の一覧にする
4. 差の一覧が空なら、AI を呼ばずに「差なし」と書いて終わる
5. 差の一覧と、その行のコメント、過去の照会を Gemini API に渡す
6. 返ってきた JSON の値を確かめる(差のキーが渡したものと一致するか)
7. 点検の一覧に書き、当月の版の写しを残す
C1 から C4 で合わないものは、AI に渡しません。 計算が合わないのは、説明の問題ではなく記入の誤りだからです。そのまま「計算の不一致」として担当者に回します。
Gemini API は UrlFetchApp で呼びます。 API キーはスクリプトのプロパティに置きます。公式の割り当てでは、URL Fetch の呼び出しは一般のアカウントで1日2万回、Google Workspace のアカウントで1日10万回で、月に30回ほどの呼び出しには十分です。1回の実行は6分までなので、1時間ごとの実行で一度に点検する会社の数に上限を置きます。
AIへ渡す前に整形する
- 通貨をそろえない … 海外子会社の資金繰り表は現地の通貨のまま点検します。換算すると、為替の動きが差として拾われます
- 差の金額と率を添える … C5 の差は、スクリプトが計算した金額と率を渡します。AI に計算させません
- コメントが空の行も渡す … 差があってコメントが空なら、それ自体が判定の材料です
- 過去の照会を添える … 同じ科目を過去3か月に照会していれば、その回答の要旨を渡します
- 会社の規模を添える … 月の支出の平均を渡し、差の大きさの目安にします
- 取引先の名前は渡す範囲を決める … コメントに書かれた得意先の名前はそのまま渡すか、記号に置き換えるかを、第13章の取り決めで決めます
4番目は、第3章の(c)への手当てです。 3か月続けて同じ科目の見込みが外れていれば、今月のコメントが丁寧でも、照会の理由になります。 過去の照会を渡さなければ、AI は毎月を初めてのものとして見ます。
AIに処理させる
させるのは、スクリプトが拾った差の1つずつについて、子会社のコメントで説明が足りているかを判定し、足りていなければ聞くことを書くことです。
| 判定 | 意味 | 例 |
|---|---|---|
explained | 理由・相手・時期が書かれ、差の金額と合う | 「A社の支払が月をまたぎ、翌月5日に入金済み」 |
insufficient | 理由はあるが、相手や時期が分からない | 「入金の遅れ」だけ |
inconsistent | コメントと差の向きや大きさが合わない | 入金が減っているのに「前倒しで入金」 |
no_comment | 差があるのにコメントが空 | - |
recurring | 説明はあるが、同じ科目で過去にも照会している | 3か月続けて「月ずれ」 |
inconsistent が、この構成で最も見つけたいものです。 コメントの言葉が丁寧でも、差の向きと合っていなければ、記入の誤りか、説明が実態と違うかのどちらかです。 担当者が忙しい月に読み流すと、最も見落としやすいものです。
資金不足の懸念(C6)にも、同じ判定をさせます。 見込みの残高が最低の残高を下回る月について、コメントに資金の手当て(借入の予定、親会社からの貸付の依頼)が書かれているかを見ます。ただし、C6 で拾ったものは、判定にかかわらず担当者に必ず回します。 AI の判定で explained になっても、資金の手当てが本当に決まっているかは人が確かめます。
recurring は、説明の中身と別の軸で付けます。 今月のコメントが explained に当たる丁寧なものでも、同じ科目を過去3か月に照会していれば recurring にします。毎月それらしい理由で外れ続ける見込みは、見込みの立て方の問題で、1か月ずつの説明では見えません。
| させないこと | 理由 |
|---|---|
| 差の計算・合計 | スクリプトが行う |
| 照会するかの最終的な判断 | 担当者が子会社との関係を見て決める |
| 資金の手当ての要否 | 貸付・増資・借入は財務部と経営の判断 |
| 子会社の経理の良し悪し | 点検の目的ではない |
| コメントに無い事情を補う | 書かれていなければ insufficient |
指示内容を固定する
あなたは企業グループの親会社の財務部で、子会社の資金繰り表を点検する立場です。
渡された差の一覧と、子会社が書いたコメントだけを使って判定してください。
【差の一覧の見方】
- 差はスクリプトが計算したものです。金額と率はそのまま使ってください。
- direction は、実績が見込みより多い(over)か少ない(under)かです。
- kind が shortage のものは、見込みの期末の残高が最低の残高を下回る月です。
【判定の選び方】
- explained ...... 理由・相手・時期が書かれ、差の向きと大きさに合っている
- insufficient ... 理由はあるが、相手か時期が分からない
- inconsistent ... コメントの内容が、差の向きや大きさと合わない
- no_comment ..... コメントが空
- recurring ...... 説明はあるが、過去3か月に同じ科目を照会している
迷ったときに explained を選ばないでください。
【厳守事項】
- 計算をしないでください。差の金額や率を自分で出し直さないでください。
- コメントに書かれていない事情を補わないでください。
「おそらく季節の要因」のように推し量らないでください。
- shortage のものは、資金の手当て(借入・貸付の依頼など)が
具体的に書かれているかだけを見てください。資金が足りるかは判断しないでください。
- 照会するべきか、急ぐべきかは書かないでください。
- questions には、子会社の経理に聞くことを1つずつ、短い文で書いてください。
explained のものは空にしてください。
- evidence には、判定の根拠にしたコメントの文をそのまま写してください。
【会社】{company_code}(通貨:{currency}、月の支出の平均:{avg_outflow})
【差の一覧】{diffs_json}
【各行のコメント】{comments_json}
【過去3か月の照会と回答の要旨】{past_inquiries}
「計算をしないでください」は、差の金額をそのまま渡しても要ります。 AI は「差は約1億円で、売上の1割に当たる」のように、頼まれていない計算を足して説明しようとします。 その数字が照会文の案に入ると、子会社に誤った数字で問い合わせることになります。
「資金が足りるかは判断しないでください」は、C6 のためです。 見込みの残高が細っている会社について、AI は「借入の予定があるので問題ない」とまとめがちです。問題があるかどうかは、借入が本当に決まっているかを人が確かめてから決めます。
出力形式を固定する
構造化出力で、次の形の JSON を受け取ります。
{
"company_code": "",
"items": [
{ "diff_key": "",
"kind": "variance | shortage",
"judgement": "explained | insufficient | inconsistent | no_comment | recurring",
"evidence": "",
"reason": "",
"questions": [""] }
],
"inquiry_draft": ""
}
diff_key は、スクリプトが差の一覧に付けたキーをそのまま返させます。 返ってきたキーが渡したキーと1対1で対応しているかをスクリプトが確かめ、抜けや余分があれば、その会社の結果を「要再実行」にします。 差の1つが判定から落ちると、照会すべきものが一覧から消えるためです。
スキーマでは kind と judgement を enum で縛ります。公式のページが勧めるとおり、構文が正しくても中身はスクリプトで確かめます。
| 点検の一覧の列 | 中身 |
|---|---|
| 会社・通貨・提出の日時 | 資金繰り表から |
| 計算の点検 | C1〜C4 の結果。合わなければ「計算の不一致」 |
| 差の数 | C5 で拾った科目の数と、C6 で拾った月の数 |
| 判定 | items の判定ごとの数 |
| 照会文の案 | inquiry_draft |
| 担当者の判断 | 照会する・しない・保留(担当者が書く) |
照会文の案は、insufficient・inconsistent・no_comment・recurring の項目をまとめた1通です。 子会社の経理に、科目ごとに何を聞きたいかが並ぶ形にします。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 子会社の資金繰り表 | Apps Script(読み取り) | 提出の欄、金額、コメント |
| 前月の写し | Apps Script(読み取り・作成) | 前月の見込みを読み、当月の写しを作る |
| 口座の残高の一覧 | Apps Script(読み取り) | 月末の残高 |
| Gemini API | UrlFetchApp | 差ごとの判定と照会文の案 |
| 点検の一覧 | Apps Script(書き込み) | 点検の結果 |
| Gmail | MailApp | 担当者への知らせ |
子会社のファイルには書き込みません。 点検の結果を子会社のファイルに書くと、子会社の経理が書き換えられます。結果は親会社の側の点検の一覧にだけ書きます。
照会のメールも送りません。 担当者が案を直し、自分のメールで送ります。
人が確認する
担当者は、点検の一覧を次の順で見ます。
- 計算の不一致 … 子会社に記入の直しを頼みます。AI の判定はありません
- 資金不足の懸念(C6) … 判定にかかわらず全件を見ます。資金の手当てが決まっているかを確かめ、必要なら上長に上げます
inconsistent… コメントと差を見比べ、照会文の案を直して送りますrecurring… 過去の回答を読み、見込みの立て方そのものを子会社と話すかを決めますinsufficientとno_comment… 照会文の案を確かめて送りますexplained… 一覧で流し見て、違和感のあるものだけ開きます
2番目を、判定より先に見てください。 資金の不足は、照会文のやり取りを待てないことがあります。
判定を覆したら、点検の一覧の「担当者の判断」の列に理由を一言書きます。 「explained だが金額が大きいので念のため照会」「insufficient だが先月の回答で分かっている」のような理由がたまると、判定の基準のどこが課の実際の判断とずれているかが見えてきます。2名の担当者で月に1回、覆した理由を読み合わせると、照会の基準そのものもそろっていきます。
例外に対処する
| 起きること | 対応 |
|---|---|
| 提出の期限を過ぎても印が無い | 翌朝、未提出の会社を担当者に知らせる |
| 科目の行がずれている | 「書式の崩れ」として点検せず、子会社に直しを頼む |
| 前月の写しが無い(新しい子会社など) | C1 と C5 を飛ばし、「前月なし」の印を付ける |
| 口座の残高の一覧に会社が無い | C4 を飛ばし、「口座の残高なし」の印を付ける |
| 提出後に数字が直された | 「提出後に更新あり」として点検し直し、前の結果も残す |
| API が失敗した・応答しない | 数字の点検の結果だけ書き、「判定待ち」として次の回に呼び直す |
| 差のキーが一致しない | その会社を「要再実行」にし、担当者に知らせる |
| 1回の実行で6分を超えそう | 残りの会社を次の回に回す |
最も多いのは2行目と5行目です。 どちらも AI の問題ではなく、提出の手順の問題です。
記録を残す
- 点検した日時と、そのときのファイルの最終更新の日時
- 当月の版の写し(翌月の C1 と C5 に使う)
- 数字の点検の結果(C1〜C6)
- AI に渡した差の一覧とコメント、返ってきた JSON
- 担当者の判断 … 照会した・しなかった・判定を覆した
- 子会社の回答の要旨(翌月以降の過去の照会として使う)
5つ目で判定を覆した件数を数え、指示を直す材料にします。 explained を担当者が照会に変えた件数が多ければ、判定の基準を厳しくします。
2つ目の写しは、点検の根拠そのものです。 子会社のファイルは翌月に上書きされるので、「このとき、この数字を見てこう判定した」を後から説明できるのは写しだけです。写しは閲覧を財務部に限ったフォルダに置き、保存の期間はグループの文書の規程に合わせます。
04実装レベルの3段階
本記事の想定は半自動化です。 1件60分のうち、検算と見比べと照会文の下書きが自動になり、担当者に残るのは判定の確かめと、照会するかの判断です。 半自動化を3か月回すと、会社ごとの基準が育ちます。 差を拾いすぎる会社、拾わなすぎる会社が見えてくるので、金額と率の基準を会社ごとに直します。 本格構成で足すのは、子会社の回答の取り込みです。 回答をメールでもらうと、過去の照会の要旨を担当者が書き写す手間が残ります。回答を点検の一覧のフォームで受ける形にすると、翌月にそのまま渡せます。
05工数削減シミュレーション
導入後 30件 × 20分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 国内外に数十社の子会社を持ち、各社から月次の資金繰り表(当月の実績と先3か月の見込み)を親会社の財務部が集めている商社・メーカー・小売・物流のグループ。資金繰り表の書式は統一されているが、点検が担当者の目と経験に頼っている場合。子会社のコメントを読んで照会するかを決める作業に時間がかかっている場合。Google Workspace を使っている場合。
- 子会社が数社で、担当者が毎月すべてを丁寧に見られる場合。キャッシュマネジメントの仕組みでグループの資金をすでに日次でまとめて管理しており、月次の資金繰り表を集めていない場合。子会社ごとに書式がばらばらで、統一する予定が無い場合。なお、子会社への貸付・増資・借入の判断は、この構成では代替できません。
07最小構成で試す方法
- 先月の資金繰り表から、照会した会社を3社、照会しなかった会社を3社選ぶ
- 各社について、前月の見込みとの差が大きかった科目を、担当者が手で書き出す
- その差の一覧(金額と率)と、該当する行のコメントを、社内で使ってよいAIサービスの画面に貼り付ける
- 「差の1つずつについて、コメントで理由・相手・時期が説明されているかを、説明あり・説明不足・コメントと差が合わない・コメントなし に分けてください。計算はしないでください。書かれていない事情を補わないでください」と指示する
- 出てきた判定を、担当者が実際に照会したかどうかと見比べる
見比べるのは、照会した項目が「説明あり」になっていないかです。 これが出ると、照会すべきものが一覧から消える形になります。
| 出てきた内容 | 判断 |
|---|---|
| 担当者の判断とおおむね同じ | Apps Script の組み立てに進む |
| 照会した項目が「説明あり」になる | 判定の基準を指示に細かく書く。構成は有効 |
| 担当者2名の判断も割れている | 照会の基準を課の中で決めるのが先 |
3行目が出たら、それが第3章の(b)の正体です。 AI を入れる前に、どういうコメントなら照会しないかを2名で決めてください。その取り決めが、そのまま指示の判定の基準になります。
数字の点検は、この段階では試しません。 計算はスクリプトが行うので、最小構成で確かめるのはコメントの読み方を AI に任せられるかだけです。差の一覧を手で作るのは手間ですが、6社なら半日で終わります。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
照会すべきものが explained になる | 迷ったら explained にしないと指示し、判定の覆りを数える |
| AI が差を計算し直して照会文に入れる | 計算を禁じ、差の金額はスクリプトの値を差し込む |
| 資金不足の懸念が「問題なし」とまとめられる | C6 は判定にかかわらず担当者に回す |
| 差のキーが落ちる | 渡したキーと返ったキーを1対1で突き合わせる |
| 前月の見込みが上書きで消える | 点検のたびに写しを残す |
| 小さい会社で差を拾いすぎる | 金額と率の両方の基準を、会社ごとに持つ |
| 為替の動きが差として拾われる | 現地の通貨のまま点検する |
| 子会社が行を足して範囲がずれる | 科目の並びを確かめ、シートを保護する |
| 書きかけの数字を点検する | 提出の印を合図にする |
| 無料の利用枠の API キーで動かしてしまう | 有料の利用枠のキーだけをスクリプトのプロパティに置く |
| 営業日の期限をトリガーで指定できない | 毎朝動かし、スクリプトで営業日の一覧と照らす |
下から2行目は、試しの段階で起きやすい失敗です。 手元で試したときの API キーをそのまま本番のスクリプトに入れると、無料の利用枠のまま動きます。本番のキーを誰が発行し、どのプロジェクトに課金を付けたかを、導入の記録に残してください。
上の3行が、この構成の失敗のほとんどです。 どれも、照会すべきものを照会しない方向の誤りです。照会しすぎは担当者が見れば分かりますが、照会しなさすぎは誰も気づきません。
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 子会社の入出金の実績と見込み、口座の残高、借入と返済の予定、コメントに書かれる得意先・仕入先の名前と取引の事情です。
- 有料の利用枠だけを使う … Gemini API の利用規約では、無料の利用枠に送った内容は製品の改善に使われ、人が読むことがあるとされ、機密の情報を送らないよう求めています。 資金繰り表は機密の情報です
- 渡す範囲を差の一覧とコメントに絞る … 資金繰り表の全体、口座の番号、銀行の名前は渡しません
- 取引先の名前の扱いを決める … コメントに書かれた得意先の名前を渡してよいかは、取引先との守秘の取り決めと、グループの情報の取り扱いの規程によります。 渡さないなら、前処理で記号に置き換えます
- 海外子会社の情報の持ち出しを確かめる … 現地の法令や契約で、資金の情報を国外のサービスに渡すことに制限がないかを確かめます
- 照会文を自動で送らない … 子会社の経理との関係に関わります。送るのは担当者です
- 資金の判断を AI に任せない … 貸付・増資・借入の判断は財務部と経営が行います。AI が出すのは、説明が足りているかの判定だけです
誤りが起きた場合のリスクは、資金不足の懸念を見落とすことと、誤った数字で子会社に照会することの2つです。 前者は判定に頼りすぎることから、後者は AI の計算から起きます。C6 を必ず人に回すことと、計算を禁じてスクリプトの値を使うことで防ぎます。
10まず何から始めるか
1週目:会社ごとの基準を決める
30社について、差を拾う金額と率、最低の残高を決めます。最初は、月の支出の平均の一定の割合で一律に置き、運用しながら直します。 あわせて、どういうコメントなら照会しないかを担当者2名で書き出します。
2週目:6社で試す
先月の資金繰り表から6社を選び、差の一覧とコメントを手元のAIサービスで判定させます。照会した項目が「説明あり」になっていないかを最優先で見ます。
3週目:数字の点検をつなぐ
Apps Script で、提出の印の拾い出し、C1〜C6 の点検、前月の写しの保存を作ります。この時点では AI を呼ばず、数字の点検の結果だけを点検の一覧に書きます。 担当者がいつもの点検と並べて見ます。
4週目:判定と照会文の案を足す
Gemini API の有料の利用枠の API キーを用意し、判定と照会文の案を足します。初回は5社だけで動かします。
2か月目: 30社に広げ、担当者が判定を覆した件数を数えます。3か月目以降: 会社ごとの基準を直し、1件60分が何分になったかを実測します。提出の当日に照会の要る項目と資金不足の懸念がそろうようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
everyHours() で何時間ごとかを指定できること。onMonthDay() が月の日付の指定であること。atHour() の時刻がその1時間のあいだで動くこと | Google Apps Script: Class ClockTriggerBuilder | 2026-10-08 |
| 1回の実行が6分までであること。URL Fetch の呼び出しが一般で1日2万回、Google Workspace で1日10万回であること | Google Apps Script: Quotas for Google Services | 2026-10-08 |
Interactions の API(/v1beta/interactions)の response_format に type: "text"・mime_type: "application/json"・schema を渡して JSON を受け取れること。enum、数値の minimum・maximum が使えること。出力の中身はアプリケーションの側で確かめるよう勧めていること | Gemini API: Structured outputs | 2026-10-08 |
| 無料の利用枠に送った内容が製品の改善に使われ、人が読むことがあり、機密の情報を送らないよう求めていること。有料の利用枠ではプロンプトと応答を製品の改善に使わないこと | Gemini API Additional Terms of Service | 2026-10-08 |
照会の基準と最低の残高は、グループの財務の方針に沿って財務部が決めてください。 本記事は上記の公式ページで確認できた範囲だけを扱っています。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-1122)についてのご相談はこちらから。
