まずはサクッと経費登録アプリを作ってみた!!!

背景と目的
中小法人や個人事業主にとって、経費の記録や精算は地味に手間がかかる業務のひとつです。特に税理士さんから「領収書だけでは用途が分からないので経費にできません」と言われたことがある方も多いのではないでしょうか。
税理士:具体的にどこの誰と何のために使った経費なのか?説明してください。
わたし:・・・
私自身もまさにその一人で、紙のレシートを整理するのも億劫だし、いちいち使途をメモするのも続かない……。そこで、できるだけ「サクッと」記録が済む方法を模索した結果、スマホ×AppSheet×GAS×Geminiという構成で、経費登録を簡略化するアプリを作ってみました。
使った技術
- AppSheet(Googleのノーコードアプリプラットフォーム)
- ChatGPT(スクリプト生成・修正相談)
- Google Apps Script(データ処理ロジック)
- Gemini API(OCRテキストから勘定科目を推定)
これらはすべて基本的に無料で使えます。特にプログラミング経験のない方でも、ChatGPTなどの支援を受けながらであれば十分構築可能だと実感しました。
やりたいこと
- スマホでレシートを撮影
- OCRで読み取った内容から「何の費用か?」を自動判定
- Gemini APIを活用して、最適な勘定科目を1つ出力
- 結果をスプレッドシートに自動記録
従来はExcelに手打ちしていた内容が、スマホで1ステップで済むようになり、記録漏れや誤分類のリスクが大きく減りました。
実行フロー
- AppSheetで入力アプリを作成
- スプレッドシートと連携
- ChatGPTでGASコードを作成
- Gemini APIを呼び出す処理をGASに組み込む
- 未処理データがあるときだけ、1件ずつ自動分類
この流れを押さえれば、請求書処理や報告書の自動整理など、他の業務にも応用できるはずです。
GASスクリプト全文
メイン処理:
const GEMINI_API_KEY = 'XXXX'; // ←自分のAPIキーをここに
function classifyExpenseAccountWithGemini_LimitedToOne() {
const spreadsheetID = "YYYY"; // ←自分のスプレッドシートIDをここに
const sheet = SpreadsheetApp.openById(spreadsheetID).getActiveSheet();
const dataRange = sheet.getRange("K2:M");
const data = dataRange.getValues();
for (let i = 0; i < data.length; i++) {
const [currentK, ocrText, flag] = data[i];
if (!flag && ocrText) {
const prompt = "以下は領収書のOCRテキストです(ノイズが含まれています)。\n"
+ "この中から、会計処理に必要な情報のみ抽出して、最も適切な「勘定科目」を1つだけ日本語で出力してください。\n"
+ "出力は勘定科目名のみとしてください(例:交際費、旅費交通費、通信費など)。\n\n"
+ "OCRテキスト:\n" + ocrText;
try {
const account = callGeminiAPI(prompt);
sheet.getRange(i + 2, 11).setValue(account); // K列
sheet.getRange(i + 2, 13).setValue("完了"); // M列
} catch (e) {
Logger.log("Error at row " + (i + 2) + ": " + e);
sheet.getRange(i + 2, 11).setValue("要分類");
sheet.getRange(i + 2, 13).setValue("エラー");
}
break;
}
}
}
Gemini API 呼び出し関数:
function callGeminiAPI(promptText) {
const url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=" + GEMINI_API_KEY;
const payload = {
contents: [{
parts: [{ text: promptText }]
}]
};
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
if (json.candidates && json.candidates.length > 0) {
return json.candidates[0].content.parts[0].text.trim();
} else {
throw new Error("Gemini API response error: " + JSON.stringify(json));
}
}
まとめ
スマホで撮って、ほぼ自動で仕分けして、経費登録が終わる。そんな仕組みを、自分で(文系でも)作ることができました。初期構築に少し時間はかかりますが、一度整えば継続がとにかく楽です。
もし「市販の経費精算システムは高すぎる…」「最低限だけでいいから簡単に済ませたい」と思っている方には、この方法がきっと役立つと思います。
0 件のコメント:
コメントを投稿