11〜12月は、来期予算の申請が各部門から一斉に集まる時期です。形式の違うシートを1つずつ開いて前年実績と見比べ、理由の薄い増額申請に差戻しを入れる作業に、経理や経営企画の担当者は数日を費やしがちです。
この記事では、Google Apps Script(GAS)で予算申請シートを自動集計し、Claude APIで増額項目の申請理由を一次チェックする仕組みを、コピペで使えるコード付きで紹介します。対象読者は、予算編成を担当する経理・経営企画の方で、GASを少し触ったことがあれば十分です。
この記事の要点
- GASを使うと、Googleドライブの1フォルダに集めた部門別の予算申請シートを、1回の実行で1枚の集計シートにまとめられます。
- Claude APIの構造化出力(output_config.format)を使うと、AIの判定を「OK・要確認・差戻し推奨」の3区分のJSONで受け取れます。
- AIチェックの対象は「前年比120%以上」「増加額50万円以上」「新規費目」に絞ると、APIコストと確認工数を抑えられます。
- 2026年11月時点でClaude Sonnet 5.5の料金は入力100万トークンあたり2ドル、出力10ドルです。
- AIは一次チェック役にとどめ、予算の承認と資産計上の判定は経理・承認者が行います。
GAS×Claude APIで予算申請を集計する仕組みとは?
GAS×Claude APIによる予算申請の集計とは、GASが部門の申請シートを1枚に集め、Claude APIが増額項目の申請理由を読んで一次判定を返す仕組みです。
AIと人の役割分担は次のとおりです。
| チェック項目 | 担当 | 理由 |
|---|---|---|
| 申請シートの転記・前年比の計算 | GAS | ルールが決まっており機械の方が正確 |
| 申請理由に数量・単価・時期の根拠があるか | Claude API | 文章の読み取りは生成AIの得意分野 |
| 勘定科目と費目の組み合わせ | Claude API+経理 | AIが違和感を指摘し経理が確定する |
| 資産計上か費用処理か | 経理 | 税務・会計の判断を伴う |
| 予算額の承認 | 承認者 | 職務権限規程に基づく意思決定 |
予算申請シートを自動集計する準備の手順
予算申請の自動集計は、申請テンプレートの統一とAPIキーの安全な保管から始めます。
- 「申請」という名前のシートに「部門・勘定科目・費目・前年実績・来期申請・申請理由」の6列を持つ共通テンプレートを作ります。
- Googleドライブに提出用フォルダを作り、URL末尾のフォルダIDを控えます。各部門はこのフォルダに申請ファイルを保存します。
- 経理側で集計用スプレッドシートを作り、「集計」シートを追加してApps Scriptエディタを開きます。
- Claude Consoleで、会社として契約した組織のAPIキーを発行します。
- 「プロジェクトの設定」のスクリプトプロパティに「ANTHROPIC_API_KEY」として登録します。コードには直接書きません。
GASで部門別の予算申請を集計する方法
GASで予算申請を集計するには、DriveAppでフォルダ内のスプレッドシートを順に開き、「申請」シートの値を配列にまとめて書き出します。次のコードは前年比の計算とファイル名の記録まで行います。
const CONFIG = {
FOLDER_ID: '申請フォルダのID',
SUMMARY: '集計',
RATIO: 1.2, // 前年比120%以上をAIチェック対象に
AMOUNT: 500000 // 増加額50万円以上も対象に
};
function consolidateBudgetRequests() {
const out = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.SUMMARY);
out.clearContents();
out.appendRow(['部門', '科目', '費目', '前年実績', '来期申請', '前年比',
'申請理由', 'ファイル名', 'AI判定', 'AIコメント', '差戻し文案']);
const files = DriveApp.getFolderById(CONFIG.FOLDER_ID)
.getFilesByType(MimeType.GOOGLE_SHEETS);
const rows = [];
while (files.hasNext()) {
const f = files.next();
const sh = SpreadsheetApp.openById(f.getId()).getSheetByName('申請');
if (!sh) continue;
sh.getDataRange().getValues().slice(1).forEach(r => {
const [dept, acc, item, prev, req, reason] = r;
if (!dept || req === '') return;
rows.push([dept, acc, item, prev, req, prev ? req / prev : '',
reason, f.getName(), '', '', '']);
});
}
if (rows.length) out.getRange(2, 1, rows.length, 11).setValues(rows);
}
集計シートは毎回クリアして書き直すため、部門が申請を修正しても再実行で最新化できます。
Claude APIで前年比と申請理由をチェックする方法
Claude APIで申請理由をチェックするには、対象行をJSONで送り、構造化出力のスキーマで「判定・コメント・差戻し文案」を返させます。公式ドキュメントでは、output_config.formatにJSONスキーマを指定すると応答がスキーマに沿うよう制約されると説明されています。
まず、チェック観点をシステムプロンプトとして定義します。
const SYSTEM_PROMPT = `あなたは事業会社の経理部で予算編成を担当するレビュアーです。
入力は部門の予算申請1行(部門・勘定科目・費目・前年実績・来期申請・申請理由)です。
次の観点で一次チェックし、指定のJSON形式で回答してください。
1. 申請理由が増加額の根拠(数量・単価・人数・時期)を説明しているか
2. 勘定科目と費目の組み合わせに違和感がないか
3. 設備・ソフトウェアなど資産計上の可能性がある支出が経費で申請されていないか
4. 一時的な支出か、来期以降も続く支出かが読み取れるか
ルール:
- 判断材料が足りない場合は推測せず「要確認」とし、不足情報をcommentに書く
- 税務・会計上の取扱いを断定しない。資産計上の可能性は「経理で確認」と書く
- request_messageは部門担当者向けの丁寧な差戻し文(150字以内)。OKなら空文字`;
次に、対象行だけをClaude APIに送るコードです。GASの実行時間は1回6分が上限のため、4分30秒で処理を止め、判定済みの行は次回スキップします。行数が多い場合は時間主導型トリガーで繰り返し実行します。
function checkWithClaude() {
const key = PropertiesService.getScriptProperties().getProperty('ANTHROPIC_API_KEY');
const sh = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(CONFIG.SUMMARY);
const data = sh.getDataRange().getValues();
const start = Date.now();
for (let i = 1; i < data.length; i++) {
const [dept, acc, item, prev, req, ratio, reason, , done] = data[i];
if (done) continue; // 判定済みはスキップ
if (prev && ratio < CONFIG.RATIO && req - prev < CONFIG.AMOUNT) {
sh.getRange(i + 1, 9).setValue('対象外'); continue;
}
if (Date.now() - start > 270000) break; // 4分30秒で停止
const r = callClaude(key, { dept, acc, item, prev, req, reason });
sh.getRange(i + 1, 9, 1, 3).setValues([[r.verdict, r.comment, r.request_message]]);
}
}
function callClaude(key, row) {
const schema = {
type: 'object',
properties: {
verdict: { type: 'string', enum: ['OK', '要確認', '差戻し推奨'] },
comment: { type: 'string' },
request_message: { type: 'string' }
},
required: ['verdict', 'comment', 'request_message'],
additionalProperties: false
};
const res = UrlFetchApp.fetch('https://api.anthropic.com/v1/messages', {
method: 'post',
contentType: 'application/json',
headers: { 'x-api-key': key, 'anthropic-version': '2026-10-21' },
muteHttpExceptions: true,
payload: JSON.stringify({
model: 'claude-sonnet-5-5',
max_tokens: 2048,
system: SYSTEM_PROMPT,
messages: [{ role: 'user', content: JSON.stringify(row) }],
output_config: { format: { type: 'json_schema', schema } }
})
});
if (res.getResponseCode() !== 200) {
return { verdict: 'エラー', comment: res.getContentText().slice(0, 200), request_message: '' };
}
const body = JSON.parse(res.getContentText());
return JSON.parse(body.content.find(b => b.type === 'text').text);
}
モデルIDとanthropic-versionの値は、2026年11月時点の公式ドキュメントの記載に合わせています。導入前に公式の「Models overview」と「Structured outputs」で最新の値を確認してください。
予算申請のAIチェックを導入する際の注意点とリスクは?
最も注意すべき点は、AIの判定を承認や却下の根拠として扱わないことです。生成AIは申請理由を読み違えたり、もっともらしい誤りを返したりする可能性があるため、判定は「優先して確認すべき行の目印」として使います。
公認会計士・管理部門責任者の視点では、資産計上の論点が重要です。PCやシステム改修費が「消耗品費」「支払手数料」で予算化されると、執行段階で固定資産やソフトウェアへの振替が発生し、予実差異の説明も難しくなります。少額減価償却資産などの基準は税制改正で変わり得るため、AIには断定させず、国税庁の情報や顧問税理士で確認します。
- 情報管理:人件費や取引先名をAPIへ送ってよいか、社内の生成AI利用規程で確認します。
- 個人情報:採用予定者の氏名や個人別の給与額は申請理由に書かないよう、記入例で明示します。
- 権限管理:集計スプレッドシートの編集権限は経理・経営企画の担当者に限定します。
- 監査対応:AIの判定は上書きせず残し、誰が確認して承認したかを追える状態にします。
よくある質問(FAQ)
GASの知識がなくても予算申請の自動集計は作れますか?
はい、記事のコードをコピーしてフォルダIDを書き換えれば動かせます。テンプレートの列構成を変える場合はコードの修正が必要ですが、変更内容をClaudeやCodexに伝えれば修正案を提案してもらえます。最初は2〜3部門で試し、手作業の集計結果と突き合わせて検証してから全社に広げると安全です。
Claude APIの料金はどのくらいかかりますか?
申請1行あたりのコストは小さく、数百行規模なら少額に収まる見込みです。2026年11月時点の公式料金では、Claude Sonnet 5.5は入力100万トークンあたり2ドル、出力10ドルです。実際の費用は申請理由の長さで変わるため、まず10行程度で試し、Claude Consoleの使用量で実績を確認してから見積もってください。
AIが「OK」と判定した申請は確認を省略してよいですか?
いいえ、省略は推奨しません。AIは申請理由の文章を読むだけで、事業計画との整合性や部門間の重複までは判断できないためです。「OK」は確認の優先度を下げる目安として使い、金額の大きい行や戦略投資に関わる行は、判定にかかわらず担当者と承認者が確認してください。
まとめ:GAS×Claude APIで予算申請の集計を効率化
予算申請の集計は、GASで転記と前年比計算を自動化し、Claude APIで増額項目の申請理由を一次チェックすると大きく効率化できます。一方で、資産計上の判断と予算の承認は人が担い、AIの判定ログを残す運用が欠かせません。
次のアクションとして、共通テンプレートを作り、2〜3部門の前年データで試験運用してみてください。AIコメントの精度を見ながらプロンプトの観点を調整すれば、来期の予算編成から本格運用に移せます。
関連記事
- 【GAS×Claude API】予実管理の差異コメントを自動生成する方法
- 【Claude for Excel】予算策定を効率化する使い方|経理・企画向け
- 【Codex×GAS】経理ツールの作り方|非エンジニアがAIでコードを書く手順
参考リンク
- Structured outputs(Claude Platform Docs)
- Models overview(Claude Platform Docs)
- Quotas for Google Services(Google Apps Script)
