取引先ごとの与信限度額と売掛金・受注残を毎日照らし合わせ、限度を超えた先と近づいた先に見直しの要否のコメント案を添えて知らせる
取引先ごとに、売掛金・未決済の手形・受注残を足した「使っている与信の枠」を毎朝限度額と照らし合わせ、超えた先と近づいた先を営業と財務へ知らせます。あわせて、限度の見直しが要るかどうかのコメント案を1社ずつ添えます。
- 生成AI
- ChatGPT/Claude/Gemini
- 連携・自動化
- Google Apps Script/Make/Power Automate/Python
- 対象業界
- 商社/建設/物流/製造
- 対象部門
- 営業/財務
- 対象業務
- 内容確認・チェック/比較検討
- 主な課題
- 人手が足りない/期限・対応漏れが起きる/確認ミスが多い
- AIで行う処理
- 判定
- 主な効果
- 判断支援/工数削減/機会損失防止
- 導入難易度
- ★★☆☆☆
- 実装レベル
- 半自動化
- 費用感
- API連携(中)
- 人間の確認
- 条件付き
01導入前 / 導入後の業務フロー
- 財務の担当者が、毎朝、販売管理のシステムから取引先別の売掛金の残高と受注残の一覧をCSVで出す
- 会計のシステムから、未決済の受取手形と、前日までの入金の記録を出す
- 3つを取引先コードで突き合わせ、使用額(売掛金+未決済の手形+受注残)を出す
- 台帳の限度額と並べ、使用率が80%を超えた先に色を付ける
- 色の付いた先について、残高が増えた理由を前月の一覧や入金の記録から探す
- 超えた先と近い先を、担当の営業へメールか電話で知らせる
- 営業から増枠の相談が来たら、財務が過去の取引と入金の様子をまとめ、決裁に回す
- 自動夜間に、販売管理と会計から出したCSVを決まったフォルダに置く(システムの定時出力、または担当者が朝一番に置く)
- 自動毎朝7時台に Google Apps Script が動き、3つのCSVと台帳を読み込む
- 自動取引先コードの対応表で名寄せし、使用額と使用率を決まった式で計算する
- 自動使用率と、今後5営業日の出荷予定・入金予定を加えた見込み使用率から、`over`(超過)/`near`(接近)/`watch`(注意)を付ける
- 自動一覧に載った先ごとに、過去3か月の残高の推移、入金の遅れの記録、受注残の内訳を集める
- 自動Claude API に渡し、見直しの要否の区分とコメント案を構造化した形で受け取る
- 自動財務のスペースに一覧を投稿し、担当の営業には自分の担当先だけをメールで知らせる
- 人財務の担当者が `over` と、区分が `payment_delay` の先を先に確かめる
- 人営業が取引先の事情を確かめ、増枠を相談するか、回収を先にするかを財務と決める
- 人限度額を変える場合は、与信管理の規程どおりに決裁を回す
各工程の詳しい説明を読む
- 財務の担当者が、毎朝、販売管理のシステムから取引先別の売掛金の残高と受注残の一覧をCSVで出す
- 会計のシステムから、未決済の受取手形と、前日までの入金の記録を出す
- 3つを取引先コードで突き合わせ、使用額(売掛金+未決済の手形+受注残)を出す
- 台帳の限度額と並べ、使用率が80%を超えた先に色を付ける
- 色の付いた先について、残高が増えた理由を前月の一覧や入金の記録から探す
- 超えた先と近い先を、担当の営業へメールか電話で知らせる
- 営業から増枠の相談が来たら、財務が過去の取引と入金の様子をまとめ、決裁に回す
(a)超過が出荷の後に分かる。 3番目と4番目は手作業の突き合わせで、忙しい日は前日の一覧のまま済ませることがあります。 その間に大口の受注が入ると、限度を超えたまま出荷が進みます。財務が気づいたときには、営業はもう納期を約束しています。
(b)照合の結果が人によって違う。 受注残に入れるのを「出荷予定日が今月のもの」に絞る人と、全部入れる人がいます。手形を期日で外す人と、決済の確認まで残す人がいます。同じ取引先の使用率が、担当者によって10ポイント違うことがあります。
(c)知らせても理由が添えられていない。 6番目の連絡は「〇〇社が限度の95%です」という数字だけです。営業は理由を知らないまま取引先に確かめに行き、それが一時的な大口なのか、入金の遅れなのかを財務と営業の両方が別々に調べます。
(d)増枠の相談が場当たりになる。 限度に近い状態が3か月続いている先でも、超えるまでは誰も相談を始めません。超えた日に急いで決裁を回すので、審査の材料がそろわないまま判断することになります。
- 【自動】 夜間に、販売管理と会計から出したCSVを決まったフォルダに置く(システムの定時出力、または担当者が朝一番に置く)
- 【自動】 毎朝7時台に Google Apps Script が動き、3つのCSVと台帳を読み込む
- 【自動】 取引先コードの対応表で名寄せし、使用額と使用率を決まった式で計算する
- 【自動】 使用率と、今後5営業日の出荷予定・入金予定を加えた見込み使用率から、
over(超過)/near(接近)/watch(注意)を付ける - 【自動】 一覧に載った先ごとに、過去3か月の残高の推移、入金の遅れの記録、受注残の内訳を集める
- 【自動】 Claude API に渡し、見直しの要否の区分とコメント案を構造化した形で受け取る
- 【自動】 財務のスペースに一覧を投稿し、担当の営業には自分の担当先だけをメールで知らせる
- 【人】 財務の担当者が
overと、区分がpayment_delayの先を先に確かめる - 【人】 営業が取引先の事情を確かめ、増枠を相談するか、回収を先にするかを財務と決める
- 【人】 限度額を変える場合は、与信管理の規程どおりに決裁を回す
8番目で人が見るのは、全社ではありません。 前日から区分も使用率の帯も変わっていない先は、一覧の中で「継続」とまとめて表示し、流し見で終わらせます。時間を使うのは、新しく載った先、帯が上がった先、区分が変わった先です。
10番目は自動にしません。 限度額の変更は台帳を書き換える処理ではなく、決裁を経て決まるものです。 この構成は台帳を読むだけで、書き換えません。
02今回想定するシステム構成
販売管理(売掛金・受注残・出荷予定) 会計(入金・手形・入金予定) │ CSVを毎晩出力 │ CSVを毎晩出力 ▼ ▼ 共有ドライブの受け渡しフォルダ ◀── 与信の台帳(スプレッドシート) ▼【トリガー】毎朝 7時台 Google Apps Script ├──▶ 名寄せ(取引先コードの対応表、親子の枠の共有) ├──▶ 使用額・使用率・見込み使用率の計算(決まった式) ├──▶ 帯の判定(over/near/watch) ▼ Claude API ── 構造化出力 │ ① 枠に近づいた理由の区分 │ ② 見直しの要否と、根拠にした数字 │ ③ 営業と財務に向けたコメント案 ▼ Google Apps Script ── 区分と数字の突き合わせ(AIの書いた数字が入力と一致するか) ├──▶ Google Chat の財務のスペース(全体の一覧) ├──▶ Gmail(担当の営業に、自分の担当先だけ) └──▶ 判定の記録のシート ▼ 【人】財務と営業が確認し、増枠の決裁か回収の相談へ
| 役割 | 想定する製品 | 代替候補 |
|---|---|---|
| 実行環境 | Google Apps Script | Python、Power Automate、Make |
| 生成AI | Claude API | OpenAI API、Gemini API |
| 台帳 | Google スプレッドシート(与信の台帳・取引先コードの対応表・判定の記録) | Microsoft Lists |
| 通知 | Google Chat の受信 Webhook(財務のスペース)と Gmail(営業) | Microsoft Teams、Slack |
新しく足すのは、スクリプトと Claude API の利用だけです。 台帳は今の財務部のスプレッドシートをそのまま使い、販売管理と会計からはCSVを出すだけです。最初の準備作業は、取引先コードの対応表を作ることです。 販売管理と会計で同じ取引先のコードが違う先、親会社と子会社で1つの枠を共有している先を、1行1社の表にします。
実行環境は Google Apps Script です。 時間主導型のトリガーで毎朝決まった時間帯に動かせ、トリガーは毎分から月1回までの間隔で設定できます。ただし時刻は1時間の幅の中で選ばれ、9時のトリガーなら9時から10時のあいだのどこかで動きます。 営業が出社する前に一覧を出したいので、7時台に置きます。
AIの出力の形は、Claude API の構造化出力で固定します。 output_config.format に json_schema の形でスキーマを渡すと、応答がそのスキーマに沿った JSON になります。enum、required、additionalProperties: false が使えるので、区分の値を決めた種類に絞れます。
財務への通知は Google Chat の受信 Webhook で送ります。 外部からスペースへの一方向の通知の仕組みで、利用者は Webhook とやり取りできません。財務の議論はスペースの中で人どうしが行い、ボットに返事をする設計にはしません。
03どうやって実装するのか
処理の起点を決める
毎朝7時台の時間主導型のトリガーで動かします。 夜間に販売管理と会計がCSVを出し終えている時刻を前提にします。受注のたびに動かすことはしません。 受注は1日に数百件あり、そのたびに3つのシステムの残高をそろえ直すと、途中の状態の数字で判定することになります。
動き始めたら、まずCSVの日付を確かめます。 受け渡しフォルダのCSVが前日の夜の出力でなければ、計算を始めずに財務のスペースへ「前日分のCSVが届いていない」とだけ投稿します。古い残高で判定した一覧を出すと、すでに入金された先を「超過」と知らせてしまいます。
トリガーは財務部の共有の管理用アカウントで作ります。 インストール型のトリガーは作った人のアカウントで動くため、担当者の個人アカウントで作ると、その人が異動したときに止まります。 失敗したときにはトリガーの持ち主へ失敗をまとめたメールが届くので、その宛先も財務部で見られるようにしておきます。
入力データを集める
| データ | 中身 | 取得元 |
|---|---|---|
| 売掛金の残高 | 取引先コード、請求済みで未入金の金額、最も古い未入金の請求の期日 | 販売管理のCSV |
| 受注残と出荷予定 | 取引先コード、受注番号、金額、出荷予定日 | 販売管理のCSV |
| 手形と入金 | 未決済の受取手形の金額と期日、前日までの入金、今後5営業日の入金予定 | 会計のCSV |
| 限度額 | 取引先コード、限度額、決めた日と決裁者、次の見直しの予定日、保証金・担保 | 与信の台帳 |
| 対応表 | 販売管理と会計のコードの対応、枠を共有するグループ | 取引先コードの対応表 |
| 過去の記録 | 過去3か月の毎日の使用率、入金の遅れの回数と日数、過去の判定と人の判断 | 判定の記録のシート |
質を決めるのは、下の2つです。 対応表が無いと、会計では入金済みなのに販売管理の側では残高が残っている先が出ます。同じ取引先を2社として数え、一方は超過、もう一方は余裕ありという一覧になります。
過去の記録は、AIが区分を付けるための材料です。 1日の使用率だけでは、一時的な山か、恒常的な不足かは分かりません。過去3か月の推移を渡すことで、「毎月少しずつ上がっている」という形を読めるようにします。
データの取得方法を決める
3つのCSVと台帳は、スプレッドシートに読み込んでから一度にまとめて扱います。 Apps Script ではスクリプトの中での計算は他のサービスを呼ぶより速く、範囲を1回でまとめて読み、計算してから1回で書き戻すのがよいとされています。1社ずつセルを読み書きすると、800社ではトリガーの1回の実行時間に収まりません。
| 取るもの | どこから | 何に使うか |
|---|---|---|
| 売掛金・受注残・出荷予定 | 販売管理のCSVを読み込んだシート | 使用額の計算 |
| 手形・入金・入金予定 | 会計のCSVを読み込んだシート | 使用額の計算と見込み使用率 |
| 限度額・見直しの予定日 | 与信の台帳 | 使用率の分母、見直しの時期 |
| 過去3か月の使用率 | 判定の記録のシート | 推移の形を見る |
| 入金の遅れの記録 | 会計のCSVと判定の記録 | payment_delay の根拠 |
計算の式は、1つに決めて文書にします。
使用額 = 売掛金の残高 + 未決済の受取手形 + 受注残(出荷前の全件)
使用率 = 使用額 ÷ 限度額
見込み使用率 =(使用額 + 今後5営業日の出荷予定のうち受注残に未計上のもの − 今後5営業日の入金予定)÷ 限度額
受注残を「全件」にするか「出荷予定日が今月のものだけ」にするかは、第3章の(b)の原因でした。 どちらにするかを財務の責任者が決め、スクリプトにはその1つだけを書きます。ここが人によって違うままだと、自動にしても一覧の数字は信用されません。
AIへ渡す前に整形する
- CSVの日付の確認 … 3つのCSVがすべて前日の夜の出力かを、ファイル名かファイルの中の基準日で確かめます。1つでも古ければ止めます
- 名寄せ … 対応表で、販売管理と会計の取引先コードを1つにそろえます。枠を共有するグループは、グループの合計で使用率を出します
- 対応表に無いコードの抽出 … どちらか一方のシステムにしか無いコードは、計算に入れずに「対応表に無い」として一覧の末尾に出します
- 使用額と使用率の計算 … 「データの取得方法」の式で計算し、小数第1位まで残します
- 帯の判定 … 使用率100%以上か見込み使用率100%以上を
over、使用率90%以上をnear、80%以上をwatchとします。線は財務の責任者が決め、スクリプトのプロパティに置きます - 前日との差分 … 前日の帯、区分、使用率と比べ、新しく載った先、帯が上がった先、帯が下がった先に印を付けます
- AIに渡す材料の組み立て … 一覧に載った先だけについて、過去3か月の使用率の推移、受注残の上位5件、入金の遅れの記録を1社1つのまとまりにします
5番目の線をAIに決めさせないでください。 80%か85%かは与信の方針で、AIの判断で毎日動くものではありません。 線をプロパティに置いておけば、方針が変わったときにもスクリプトを書き換えずに済みます。
7番目で、取引先の名称を渡すかどうかを決めます。 区分の判定に名称は要りません。取引先コードと数字だけを渡し、名称は通知を組み立てるときにスクリプトの側で付けます。
AIに処理させる
させるのは、一覧に載った先ごとに「なぜ枠に近づいたのか」の区分を付け、見直しの要否のコメント案を書くことです。 使用率の計算と帯の判定は前処理で終わっています。
| 区分 | 判定の材料 | 見直しの方向 |
|---|---|---|
temporary_peak | 受注残の上位に大口があり、入金予定で使用率が戻る見込み | 増枠は不要。一時的な枠の超過を認めるかを決裁 |
structural_growth | 過去3か月の使用率が右肩上がりで、入金の遅れが無い | 増枠の相談を始める |
payment_delay | 入金の遅れがあり、売掛金の残高が増えている | 増枠しない。回収の確認が先 |
limit_outdated | 限度額を決めた日が古く、見直しの予定日を過ぎている | 定例の見直しを前倒しする |
insufficient_data | 推移の記録が足りない、新規の取引先 | 人が判断する |
区分は1社に1つだけ付けさせます。 入金の遅れがあって、取引も増えている先は、payment_delay を優先させます。 増枠を検討する前に回収を確かめるのが順序だからです。この優先順位も指示に書きます。
| させないこと | 理由 |
|---|---|
| 限度額をいくらにするかの提案 | 審査を経て決めるもので、残高の推移だけでは決められない |
| 出荷を止めるかどうかの判断 | 取引先との関係と契約に関わる。人が決める |
| 使用率の再計算 | 前処理の数字をそのまま使う。AIの計算で数字が変わらないように |
| 取引先の信用状態の推測 | 渡していない情報で「業績が悪化している」などと書かない |
| 入金の遅れの理由の推測 | 遅れの事実だけを書く。理由は営業が取引先に確かめる |
4行目が、いちばん起きやすい失敗です。 入金の遅れがある先について、何も言わなければ「資金繰りの悪化が懸念されます」と書きます。渡したのは入金の日付だけで、資金繰りの情報は渡していません。 この一文が営業に届くと、取引先への聞き方が変わってしまいます。
指示内容を固定する
あなたは商社の財務部で、取引先の与信の使用状況を確認する立場です。
与えられた数字と記録だけを見て判定してください。推測で埋めないでください。
【あなたの仕事】
一覧に載った取引先ごとに、与信の枠に近づいた理由の区分を1つ選び、
見直しの要否についてのコメント案を書いてください。
【区分の選び方】
- temporary_peak ...... 受注残の上位に大口の受注があり、
入金予定を反映した見込み使用率が下がる
- structural_growth ... 過去3か月の月末の使用率が毎月上がっており、
入金の遅れの記録が無い
- payment_delay ....... 入金の遅れの記録があり、売掛金の残高が増えている
- limit_outdated ...... 限度額を決めた日から見直しの予定日を過ぎている
- insufficient_data ... 推移の記録が2か月分に満たない、または判断の材料が足りない
複数に当てはまるときは、payment_delay を最優先にしてください。
迷ったときは insufficient_data を選んでください。
【厳守事項】
- 使用率・使用額・金額は、入力の値をそのまま書いてください。計算し直さないでください。
- evidence には、判定の根拠にした入力の項目名と値を書いてください。
- 限度額をいくらにすべきかを書かないでください。
- 出荷を止めるべきかどうかを書かないでください。
- 取引先の業績、資金繰り、信用状態について、入力に無いことを書かないでください。
- 入金が遅れた理由を推測しないでください。遅れた日数と回数だけを書いてください。
- コメント案は、営業向けに3文以内、財務向けに3文以内で書いてください。
- 営業向けのコメント案には、取引先に何を確かめればよいかを1つ書いてください。
【取引先ごとの入力】{accounts_json}
【帯の線】{thresholds}
【今日の日付】{today}
「計算し直さない」を明記しないと、使用率を自分で割り直します。 端数の扱いが前処理と違うので、通知の中で同じ取引先の使用率が2つの値で並ぶことがあります。数字は前処理の1か所でだけ作ります。
「迷ったら insufficient_data」も同じ考え方です。 材料が足りないときに structural_growth を選ぶと、営業が増枠の相談を始めてしまいます。わからないことを、わからないと返させます。
出力形式を固定する
次の形のJSONで受け取ります。
{
"results": [
{
"account_id": "C-01234",
"band": "near",
"reason": "temporary_peak | structural_growth | payment_delay | limit_outdated | insufficient_data",
"review_needed": "yes | no | undecided",
"evidence": [
{ "field": "", "value": "" }
],
"comment_sales": "",
"comment_finance": "",
"question_to_customer": ""
}
]
}
1つ目の理由は、reason を enum で絞れることです。 自由文で理由を書かせると、「一時的な増加」「一過性の要因」「スポット案件」と言い方が毎日変わり、判定の記録を後から数えられません。 区分が決まった値なら、「payment_delay が3か月続いた先」を記録から機械的に拾えます。
2つ目は、band をAIが書き換えていないかを確かめられることです。 band は前処理で付けた値をそのまま返させ、スクリプトの側で入力と一致するかを比べます。一致しなければ、その社の結果を捨てて「判定できず」とします。
3つ目は、evidence の数字を入力と突き合わせられることです。 field と value の組で返させ、スクリプトが入力の同じ項目の値と比べます。AIが書いた数字が入力に無い値なら、コメント案を通知に載せません。
システムへ連携する
| つなぎ先 | 方式 | 内容 |
|---|---|---|
| 受け渡しフォルダのCSV | スプレッドシートへの読み込み | 前日の夜の残高・受注残・入金 |
| 与信の台帳 | 範囲をまとめて読む | 限度額、見直しの予定日(書き込まない) |
| Claude API | UrlFetchApp.fetch で呼ぶ | 区分とコメント案を構造化出力で受け取る |
| Google Chat | 受信 Webhook | 財務のスペースに全体の一覧を投稿 |
| Gmail | メールの送信 | 担当の営業に、自分の担当先だけ |
| 判定の記録のシート | 範囲をまとめて書く | 当日の数字・区分・コメント案 |
Claude API は UrlFetchApp.fetch で呼びます。 method を post、contentType を JSON にし、headers に API キーを入れます。muteHttpExceptions を true にすると、失敗の応答でも例外を投げずに応答が返ります。 応答のコードを見て、失敗した社だけを後で回し直します。
API キーはスクリプトのプロパティに置きます。 スクリプトのプロパティは、そのスクリプトのすべての利用者に共有されるアプリ全体の設定の置き場所です。キーをスクリプトの本文に書かないでください。 帯の線もここに置きます。
Google Chat の受信 Webhook には、スペースあたりの上限があります。 spaces.messages.create のスペースごとの上限、毎秒1件が、そのスペースのすべての Webhook で共有されます。30社を1社1件で投稿せず、1件のメッセージにまとめます。 区分ごとに見出しを分け、新しく載った先を先頭に置きます。
営業へのメールは、担当者ごとに1通にまとめます。 1人の営業が5社を持っていれば、5社分を1通にします。Google Workspace のアカウントでは、メールの受信者数に1日あたりの上限があります。担当先の無い営業には送りません。
人が確認する
人が開くのは、新しく載った先、帯が上がった先、区分が変わった先です。 前日と同じ帯・同じ区分の先は「継続」とまとめ、財務は件数と社名を流し見ます。全社を開く設計にすると、第10章の10.0時間には収まりません。
overを最初に見る … 超過している先と、見込みで超える先。出荷を進めてよいかを、その日のうちに営業と決めますpayment_delayを次に見る … 入金の遅れの日付を会計の画面で確かめます。入金の消し込みが遅れているだけのことがあります- AIの区分を確かめる …
evidenceの数字を見て、区分が妥当かを判断します。違えば区分を直し、直したことを記録します - 営業へ確認を頼む …
question_to_customerを参考に、営業が取引先に確かめます。メールの文面をそのまま取引先へ転送しないように、営業に伝えておきます - 見直しの決裁を回す … 増枠の相談は、与信管理の規程どおりに審査の資料をそろえて決裁へ回します
2番目を省かないでください。 会計の側で入金の消し込みが翌日にずれただけでも、データの上では入金の遅れに見えます。その先を payment_delay として営業に知らせると、営業は支払いの催促と受け取られかねない聞き方をします。
目標は、600件をならして1件1分です。 毎日30社のうち、時間を使って見るのは新しく載った先と状況が変わった先の5〜8社という想定です。
例外に対処する
| 起きること | 対応 |
|---|---|
| CSVが前日の出力でない | 計算を始めず、財務のスペースに「前日分が届いていない」と投稿する |
| 対応表に無い取引先コード | 計算に入れず、一覧の末尾に「対応表に無い」として出す |
| 限度額が台帳に無い | 新規の取引先か登録漏れ。insufficient_data として人へ回す |
| 1回の実行が6分を超えそう | 1回の実行は6分まで。社の多い日は2回に分け、どこまで終わったかをシートに残す |
| Claude API が応答しない・失敗の応答 | その社は「判定できず」とし、数字と帯だけで通知する。翌朝に回し直さない |
| 出力がスキーマに沿わない | stop_reason が refusal や max_tokens のときは沿わないことがある。その社を捨てて人へ回す |
band が入力と違う | その社の結果を捨てる。AIに帯を書き換えさせない |
evidence の数字が入力に無い | コメント案を載せず、区分だけを「要確認」の印付きで出す |
| 枠を共有するグループの一部だけが載る | グループの合計で判定する。個社では判定しない |
上から3行目までが、最初の1か月の大半を占めます。 どれもAIの問題ではなく、名寄せと台帳の整備の問題です。 対応表に無いコードの一覧を毎日見て、1件ずつ表に足していくと、2か月ほどで落ち着きます。
記録を残す
- その日に読み込んだCSVのファイル名と基準日
- 取引先ごとの使用額、使用率、見込み使用率、帯(前処理の結果)
- AIに渡した入力と、返ってきたJSONの全文
- 人が区分を直した記録 … どの社を、どの区分からどの区分に変えたか
- 営業が取引先に確かめた結果と、その後の判断(増枠の決裁、一時的な超過の承認、回収の確認)
- そのとき使った帯の線と、台帳の限度額
最後の行を残すのは、線と限度額が後から変わるためです。 線を80%から85%に変えると、過去の一覧に載っていた先の意味が変わります。当時の線が残っていないと、なぜその日にその先が載ったのかを説明できません。
04実装レベルの3段階
半自動化で、1件5分が1分になります。この段階が本記事の想定です。 突き合わせ、理由の確認、連絡、メモが自動になり、人が使う時間は、状況が変わった先の確認だけになります。 本格構成は、販売管理のシステムの側に手を入れることになります。 受注の登録時に照合するには、販売管理から受注のたびにデータを受け取る仕組みが要ります。半自動化で3か月運用し、帯の線と区分の付き方が落ち着いてから検討してください。 帯の線が決まらないうちに受注を保留する仕組みを作ると、営業の受注が止まります。
05工数削減シミュレーション
導入後 600件 × 1分 ÷ 60 = 10 時間/月
自社条件で導入効果を整理したい方へ
このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。
06向いている企業・向いていない企業
- 取引先が数百社あり、与信限度額を台帳で持っているが、受注のたびに限度との照合ができていない商社・卸・メーカー。売掛金の残高は会計や販売管理から取れるのに、受注残や未決済の手形を足した「使っている枠」を毎日見る人がいない場合。限度の超過が出荷の後に分かり、営業と財務のあいだで同じやり取りを毎月くり返している場合。
- 取引先が数十社で、財務の担当者が全社の残高を頭に入れている場合。販売管理のシステムに与信の照合と受注の保留の機能があり、すでに使われている場合。取引先の大半が前払いか現金取引で、掛けの枠を持たない場合。なお、限度額を上げるか、出荷を止めるかという与信の判断そのものは、この構成では代替できません。
07最小構成で試す方法
- 先月のある1日について、販売管理と会計の一覧と台帳から、使用率80%以上の先を手作業で30社選ぶ
- その30社について、過去3か月の月末の使用率と、入金の遅れの記録を表にする
- 取引先名を取引先コードに置き換え、手元のAIサービスに表を貼り付ける
- 「この30社について、与信の枠に近づいた理由を、一時的な大口・取引の拡大・入金の遅れ・限度額が古い・材料不足のどれか1つに分けてください。数字を計算し直さないでください。限度額をいくらにすべきかは書かないでください」と指示する
- 出てきた区分を、その後に実際に起きたこと(増枠した、入金で戻った、回収に動いた)と突き合わせる
30社は必ずやってください。 スクリプトを書く前に、「数字と入金の記録だけで区分が付くのか」を確かめます。
| 出てきた内容 | 判断 |
|---|---|
| その後に起きたことと区分がおおむね合う | スクリプトでの自動化に進む |
| 入力に無い信用状態を書いた | 指示の書き方で直る。構成は有効 |
| 推移の記録が足りず、区分が付かない社が多い | 判定の記録を貯めるのが先。 3か月は帯だけで運用する |
3行目が出ることは珍しくありません。 過去の使用率を毎日残している会社は少ないからです。その場合は、まず帯の計算と通知だけを自動にして、記録が貯まってから区分を足します。
08実装時につまずきやすいポイント
| 問題 | 対策 |
|---|---|
| 同じ取引先が2社として数えられる | 販売管理と会計のコードの対応表を先に作る |
| 使用額の式が人によって違う | 受注残の範囲と手形の扱いを1つに決め、文書にする |
| 古いCSVで判定した一覧が出る | 基準日を確かめ、古ければ計算を始めない |
| AIが使用率を計算し直す | 計算しないことを指示に書き、band と evidence を入力と突き合わせる |
| 入力に無い信用状態を書く | 禁止を明記し、コメント案の文を定期的に読み直す |
| 消し込みの遅れが入金の遅れに見える | payment_delay は財務が会計の画面で確かめてから営業へ |
| 毎日同じ先の通知が届き、読まれなくなる | 前日との差分を出し、「継続」はまとめる |
| Chat への投稿が上限で落ちる | 1社1件にせず、1件のメッセージにまとめる |
| 担当者の個人アカウントのトリガーが止まる | 財務部の共有の管理用アカウントで作る |
| 帯の線をAIに決めさせる | 線はプロパティに置き、財務の責任者が決める |
| 枠を共有するグループを個社で判定する | 対応表にグループを持たせ、合計で判定する |
09セキュリティ・AIガバナンス上の注意点
この構成で扱うデータ: 取引先ごとの売掛金・受注残・手形の金額、入金の遅れの記録、与信の限度額です。どれも取引先にとっても自社にとっても外に出せない情報です。
- AIに渡すのは取引先コードと数字だけにする … 区分の判定に取引先の名称は要りません。名称はスクリプトの側で通知に付けます
- 限度額の変更と出荷の停止をAIに書かせない … どちらも与信管理の規程で決裁者が決めるものです。AIのコメント案が決裁の代わりにならないように、指示で禁じ、出力の項目にも置きません
- 営業への通知を取引先へ転送させない … コメント案は社内向けの文です。
question_to_customerは「確かめること」で、そのまま送る文面ではないと営業に伝えます - 通知の範囲を担当者ごとに絞る … 営業には自分の担当先だけを送り、全社の一覧は財務のスペースだけに出します
- API キーと帯の線をスクリプトの本文に書かない … プロパティに置き、スクリプトの編集権限を財務部の管理者に限ります
- 判定の記録を消さない … 誰がどの区分を直し、どう判断したかが、後の与信の審査の材料になります
誤りが起きた場合のリスクは、超過を見落として出荷することと、問題の無い先を入金の遅れとして扱うことの2つです。 前者は古いCSVと名寄せの漏れで起き、後者は消し込みの遅れを確かめないと起きます。どちらもAIの判定の前の段階で守ります。
10まず何から始めるか
1週目:使用額の式と帯の線を決める
受注残の範囲、手形の扱い、80%・90%・100%の線を、財務の責任者が決めて1枚の文書にします。3名の担当者に、今どう計算しているかを聞き、違いを洗い出すところから始めます。
2週目:取引先コードの対応表を作る
販売管理と会計のコードが違う先、枠を共有するグループを表にします。800社を一度に埋める必要はありません。 毎日の一覧に載る上位100社から埋めます。
3週目:30社で試す
先月の1日分の30社を表にして、手元のAIサービスで区分を付けさせます。その後に実際に起きたことと突き合わせ、入力に無い信用状態を書いていないかを最優先で見ます。
4週目:毎朝の計算と通知をつなぐ
Apps Script で3つのCSVと台帳を読み、使用率と帯を計算し、財務のスペースに一覧を投稿するところまで作ります。この時点ではAIの区分を付けず、計算と差分の表示だけを1か月回します。
2か月目: 判定の記録のシートに毎日の使用率を貯めながら、AIの区分とコメント案を足します。財務が区分を直した件数を毎週数えます。3か月目以降: 営業へのメールを足し、1件5分が何分になったかを実測します。structural_growth が続いた先が、定例の見直しの前に審査に回るようになった時点で、この構成は完成です。
11関連ユースケース
12この仕組みを理解するための記事
13技術仕様の確認日・参考情報
| 確認した内容 | 情報源 | 確認日 |
|---|---|---|
| 時間主導型のトリガーが毎分から月1回までの間隔で設定でき、時刻が1時間の幅の中で選ばれること(9時なら9時から10時)。インストール型のトリガーが作った人のアカウントで動くこと。失敗時に失敗をまとめたメールが届くこと | Google for Developers: Installable Triggers | 2026-10-06 |
| 1回の実行が6分まで、トリガーが1スクリプトにつき1人20個まで、Google Workspace のアカウントで URL Fetch が1日100,000回、メールの受信者が1日1,500人であること。上限が予告なく変わりうること | Google for Developers: Quotas for Google Services | 2026-10-06 |
fetch(url, params) の method・contentType・headers・payload。muteHttpExceptions を true にすると失敗の応答でも例外を投げずに応答を返すこと | Google for Developers: Class UrlFetchApp | 2026-10-06 |
| スクリプトの中での処理が他のサービスを呼ぶより速いこと。範囲をまとめて読み、計算してからまとめて書き戻すのがよいこと | Google for Developers: Best Practices | 2026-10-06 |
| スクリプトのプロパティがすべての利用者に共有されるアプリ全体の設定値の置き場所であること。値が文字列で保存されること | Google for Developers: Properties Service | 2026-10-06 |
受信 Webhook がスペースへの一方向の非同期の通知であり、利用者がやり取りできないこと。Business または Enterprise の Google Workspace のアカウントが要ること。spaces.messages.create のスペースごとの上限(毎秒1件)がスペースのすべての Webhook で共有されること | Google for Developers: Send messages to Google Chat with incoming webhooks | 2026-10-06 |
output_config.format に json_schema の形でスキーマを渡すと JSON で応答すること。enum・required・additionalProperties: false が使えること。stop_reason が refusal や max_tokens のとき出力がスキーマに沿わないことがあること。enum の値が大文字と小文字だけ違う形で返ることがあること | Claude Docs: Structured outputs | 2026-10-06 |
使用額の式、帯の線、限度額の見直しの手続きは、自社の与信管理の規程に従って決めてください。 本記事は上記の公開情報で確認できた範囲だけを扱っています。販売管理と会計のシステムからのCSVの出し方は、利用しているシステムの案内を確認してください。
実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。
自社の業務に使えるAI活用候補を整理します
このユースケース(UC-0550)についてのご相談はこちらから。
