Google Drive・スプレッドシート・Gemini APIを準備する方法|家計簿OCR自動化の初期設定(第二回)

Google Drive・スプレッドシート・Gemini APIを準備する方法|家計簿OCR自動化の初期設定
第2回/全4回
🤖 AI活用レベル Lv.4獲得可能XP 50 AI×GAS×Google Workspace
※この記事で使用する店舗名、日付、金額、URL、フォルダID、スプレッドシートIDは、すべて説明用の架空例です。実際の検証データや個人情報は掲載していません。
📊 学習XP:0 / 50
🏅 バッジ:🎧耳から学習✅準備完了🔍深掘り🎯クイズ挑戦👑全問正解
家計簿OCR自動化システムの構築フェーズ1 Google WorkspaceとGemini APIを連携する初期セットアップ設計図
🎧 この記事を音声で聞く(作業しながらの学習にどうぞ)

再生速度:1.0x1.25x1.5x2.0x

前回は、紙の家計簿やレシートをやめずに、入力と集計だけをデジタル化する考え方を紹介しました。

今回から、実際の仕組みを作っていきます。

完成後の流れは、次のとおりです。

手書き家計簿・レシートを撮影Google Driveへ保存Google OCRで文字を抽出Geminiが元画像とOCR文字を確認Googleスプレッドシートへ自動登録人が日付・金額を最終確認
Blueprint to Build 撮影からGoogle Drive保存、OCR、Gemini確認、自動登録、人の最終確認までの6ステップ全体像

第2回では、まだGASコードを実行しません。

最初に、次の4つを準備します。

Google Drive/Googleスプレッドシート/Google Apps Script/Gemini APIキー

GASコードは第3回で、ファイルごとに全文掲載します。

今回準備するもの

必要なものは、Googleアカウントです。

今回の検証では、次のサービスを使用しました。

サービス役割
Google Driveレシートや手書き家計簿の保存
GoogleドキュメントOCRで読み取った文字の保存
Googleスプレッドシート家計データの管理・集計
Google Apps ScriptOCR、AI、登録処理の自動化
Google AI StudioGemini APIキーの発行
Gemini API画像・PDFの確認と項目整理

Google Driveのスマートフォンアプリでは、領収書や請求書などを撮影し、検索可能なPDFとしてDriveへ保存できます。AndroidとiPhone・iPadの両方にスキャン機能があります。

1.Google Driveに親フォルダを作る

最初に、レシートや手書き家計簿を保存する場所を作ります。

Google Driveを開き、新しいフォルダを作成してください。

フォルダ名は、次のようにします。

家計OCR自動化

この段階では、親フォルダだけ作れば大丈夫です。

最終的には、この中に次の4フォルダを作ります。

家計OCR自動化
├─ 01_処理待ち
├─ 02_処理済み
├─ 03_要確認
└─ 04_OCRドキュメント

ただし、4つのサブフォルダはGASの初期設定処理で自動作成します。

手動で作っても問題はありませんが、名前を間違える可能性があるため、親フォルダだけ準備する方法が分かりやすいでしょう。

Google Driveに親フォルダ家計OCR自動化を作り01処理待ち02処理済み03要確認04OCRドキュメントのサブフォルダをGASで自動作成する構成図

各フォルダの役割

フォルダ役割
01_処理待ち新しいレシートや家計簿を保存する
02_処理済み正常に登録できた原本を移動する
03_要確認読み取り失敗や確認が必要な原本を移動する
04_OCRドキュメントOCRで作成されたGoogleドキュメントを保存する

処理待ちと処理済みを分けることで、どこまで登録したのかが分からなくなる問題を防ぎます。

2.Google DriveのフォルダIDを確認する

作成した「家計OCR自動化」フォルダを開きます。

ブラウザ上部のURLには、次のような文字列が表示されます。

https://drive.google.com/drive/folders/XXXXXXXXXXXXXXXXXXXXXXXX

folders/より後ろの部分がフォルダIDです。

説明用の例では、次の部分です。

XXXXXXXXXXXXXXXXXXXXXXXX

このIDを、あとでGASの設定ファイルへ入力します。

ブラウザURLのfolders以降がフォルダID フォルダIDは住所でありAPIキーは鍵であることを示す比較図

フォルダIDはAPIキーではない

フォルダIDとAPIキーは別物です。

フォルダIDは、GASが処理対象のフォルダを見つけるための住所のようなものです。

フォルダID =どのフォルダを処理するか指定する情報

一方、APIキーはGeminiへ接続するための認証情報です。

APIキー =Gemini APIへ接続するための鍵

フォルダIDだけで、他人が自由にフォルダの中身を閲覧できるわけではありません。

ただし、実際のフォルダIDも記事やSNSへ積極的に公開する必要はありません。

3.Googleスプレッドシートを作る

次に、家計データを保存するGoogleスプレッドシートを作ります。

新しいスプレッドシートを作成し、名前を次のようにします。

家計OCR自動管理

現時点では、シートを自分で追加する必要はありません。

GASの初期設定を実行すると、次の5シートが自動で作成されます。

00_設定/01_OCR原文/02_家計データ/03_月次集計/04_検証ログ
Googleスプレッドシート家計OCR自動管理を作成し00設定01OCR原文02家計データ03月次集計04検証ログの5シート構成を示す図

各シートの役割

00_設定
フォルダID、使用するGeminiモデル、カテゴリ候補などを確認するシートです。

01_OCR原文
Google OCRが読み取った文字と、Geminiが返した結果を保存します。OCRがどこを間違えたのかを、あとから確認できます。

02_家計データ
実際の家計簿データを保存します。主な項目は次のとおりです。

利用日/店舗・相手先/内容/カテゴリ/金額/支払方法/確認状態/確認事項

03_月次集計
登録されたデータを、月別やカテゴリ別に集計します。

04_検証ログ
処理時間、抽出件数、エラー内容などを記録します。今回の記事では、単に「動いたか」だけでなく、OCRやAIの精度と限界も検証するため、このログを残します。

4.スプレッドシートIDを確認する

作成したGoogleスプレッドシートを開きます。

URLは、次のような形です。

https://docs.google.com/spreadsheets/d/YYYYYYYYYYYYYYYYYYYYYYYY/edit

/d//editの間にある文字列がスプレッドシートIDです。

説明用の例では、次の部分になります。

YYYYYYYYYYYYYYYYYYYYYYYY

このIDも、あとでGASの設定ファイルへ入力します。

URLの後ろにある次の部分は、シートを示す番号です。

gid=123456789

今回のGASで使用するのはgidではありません。必要なのは、スプレッドシート全体を示すIDです。

使用する部分
/d/スプレッドシートID/edit
スプレッドシートURLのdとeditの間がスプレッドシートID gid以降のシート番号は今回使用しないことを示す図

5.Google Apps Scriptのプロジェクトを作る

今回の検証では、スプレッドシートから独立した「独立型Apps Script」を使用しました。

Google Apps Scriptの管理画面を開き、新しいプロジェクトを作成します。

プロジェクト名は、次のようにします。

家計OCR自動化

独立型Apps Scriptでは、特定のスプレッドシートを自動的に認識しません。その代わり、先ほど確認したスプレッドシートIDをコードへ設定します。

SPREADSHEET_ID: '自分のスプレッドシートID'

この方法なら、処理対象がコード上で明確になります。

スプレッドシートに紐づかない独立型Apps Scriptを使用しConfig.gsなど7ファイル構成を作る図 拡張子の二重入力に注意

コードファイルを作る

第3回では、次のファイルを作成します。

Config.gs/Setup.gs/OCR.gs/Gemini.gs/Main.gs/Spreadsheet.gs/Utils.gs/appsscript.json

Apps Scriptの左側にある「+」からスクリプトファイルを追加できます。

ファイル名を入力するときは、.gsを二重につけないようにします。

たとえば入力欄に、Configと入力すれば、画面上では通常、Config.gsと表示されます。

注意:Config.gs.gsとなっても動作へ直ちに影響するとは限りませんが、管理しにくいため修正しておきましょう。

6.Gemini APIキーを取得する

ブラウザ版Geminiへ手作業でファイルを渡すだけなら、APIキーは必要ありません。

しかし、GASから自動的にGeminiを呼び出すには、APIキーが必要です。

APIキーは、Google AI Studioで自分自身が取得します。記事に掲載された共通キーを使用する仕組みではありません。

APIキーの取得手順

Google AI Studioを開く[API Keys](APIキー)をクリック[Create API key](APIキーを作成)を選ぶ表示されたAPIキーをコピー

APIキーは、次のような長い文字列です。

AIzaSyXXXXXXXXXXXXXXXXXXXXXXXXXXXX

これは説明用の架空例です。

Google AI StudioでAPI Keysを開きCreate API keyで生成された文字列をコピーする手順図 取得したキーは公開しない厳重注意
取り扱い厳重注意
実際に発行されたAPIキーは、この記事のコメント欄、SNS、メール、チャットなどへ貼らないでください。

2026年7月時点では、Google AI Studioで新しく作成されるGemini APIキーは、新しい認証方式のキーとして発行されます。古い標準キーからの移行も進められているため、新規作成したキーを使用する方が分かりやすいでしょう。

7.APIキーをスクリプトプロパティへ保存する

取得したAPIキーを、GASコードへ直接書くことは避けます。

次のようにコードへ貼り付ける方法は使用しません。

const API_KEY = 'AIzaSyXXXXXXXXXXXXXXXX';

コードを他人へ渡したときに、APIキーまで一緒に漏れる可能性があるからです。

今回は、Apps Scriptの「スクリプトプロパティ」へ保存します。

スクリプトプロパティは、設定名と値を組み合わせて、スクリプト内に保存できる機能です。今回のコードでは、PropertiesService.getScriptProperties()を使ってAPIキーを読み取ります。

コードへの直接記述はNG GASのスクリプトプロパティという専用の金庫にプロパティ名GEMINI_API_KEYで保存するのがOKという比較図

登録手順

Apps Script画面左下の⚙プロジェクトの設定を押す下へスクロールし「スクリプト プロパティ」を探す「スクリプト プロパティを追加」を押す

次の内容を登録します。

入力欄入力内容
プロパティGEMINI_API_KEY
Google AI Studioで取得したAPIキー

左側のGEMINI_API_KEYは、コードがAPIキーを探すための名前です。右側へ、実際に取得したAPIキーを貼り付けます。最後に保存します。

名前を変えない

プロパティ名は、必ず次の文字列にします。

GEMINI_API_KEY

たとえば、次のように変更するとコードから取得できません。

GEMINI_KEY/API_KEY/GeminiApiKey

今回掲載するGASは、GEMINI_API_KEYという名前を探すように作られています。

8.Geminiのモデルを確認する

今回の自動化では、次のモデルを使用します。

gemini-3.1-flash-lite

このモデルは、テキストだけでなく、画像やPDFの入力にも対応しています。また、出力形式をJSONへ固定する構造化出力にも対応しているため、レシートや手書き家計簿から抽出した情報をGASで扱いやすくできます。

今回の用途では、次のような結果を返させます。

{
  "date": "2026-06-01",
  "merchant": "〇〇スーパー",
  "description": "食料品",
  "category": "食費",
  "amount": "1280",
  "paymentMethod": "クレジットカード"
}

記事公開後にモデル名が変更・終了する可能性はあります。

エラーで「モデルが見つかりません」と表示された場合は、Google AI Studioのモデル一覧で、画像・PDF入力と構造化出力に対応した現在のモデルを確認してください。

9.無料利用枠について確認する

Gemini APIには無料利用枠があります。

今回使用するgemini-3.1-flash-liteにも、無料枠の設定があります。ただし、利用できる回数や処理量には上限があり、条件は変更される可能性があります。無料枠では、送信した内容がGoogleの製品改善に使用される扱いです。有料枠では、製品改善へ使用しないと案内されています。

そのため、本格的に使い始める前に、次の点を確認してください。

現在の無料枠/1日・1分あたりの利用上限/使用するモデル/データの取り扱い/課金設定の有無
gemini-3.1-flash-liteは画像PDF入力と構造化出力JSONに対応 無料枠には1分1日あたりの利用上限がありエラー429に注意という図

無料枠の上限を超えた場合、次のようなエラーが発生することがあります。

429 RESOURCE_EXHAUSTED

これは、リクエスト回数や処理量などの上限を超えた場合に発生するエラーです。

今回のように、個人の家計簿を数枚ずつ試す場合と、大量のレシートを毎日処理する場合では、使用量が異なります。

「無料だから無制限」と考えず、まず少ない枚数で検証します。

10.Google Drive拡張サービスを有効にする

今回のGASでは、画像やPDFをGoogleドキュメント形式へ変換するために、Google Driveの拡張サービスを使用します。

Apps Scriptには通常のDriveAppとは別に、Google Drive APIを利用するための拡張サービスがあります。このサービスは、使用前に有効化が必要です。

エディタから追加する方法

Apps Scriptのエディタを開く左側の「サービス」の右にある「+」を押す一覧から「Drive API」を選ぶ(バージョンはv3)「追加」を押す
サービスからDrive API v3を追加する手順とプロジェクトの設定でappsscript.jsonマニフェストファイルの表示をオンにする手順の図

appsscript.jsonで設定する方法

第3回で掲載するappsscript.jsonには、Drive APIを有効化する設定を含めます。

"enabledAdvancedServices": [
  {
    "userSymbol": "Drive",
    "version": "v3",
    "serviceId": "drive"
  }
]

そのため、第3回のマニフェストを全文貼り付ければ、設定内容もコード上で確認できます。

11.appsscript.jsonを表示する

Apps Scriptでは、初期状態でappsscript.jsonが画面に表示されていない場合があります。

左側の歯車マークから「プロジェクトの設定」を開く「appsscript.jsonマニフェストファイルをエディタで表示する」をオンにする

エディタへ戻ると、ファイル一覧に次の名前が表示されます。

appsscript.json

第3回では、このファイルも全文置き換えます。

12.テスト用データを準備する

最初から本物のカード情報が記載されたレシートを使う必要はありません。

まずは、個人情報が少ないレシートや、自分で作った手書き家計簿で試します。

説明用の手書き例は、次のような内容です。

2026年6月1日 〇〇スーパー 食費 1,280円 カード
2026年6月2日 〇〇ドラッグ 日用品 980円 現金
2026年6月3日 〇〇鉄道 交通費 420円 ICカード
テストは個人情報のないダミーデータから始め本物のレシートを使う場合はカード番号や氏名住所をAI送信前に隠すか折る図

本物のレシートを使う場合は、次の情報が写っていないか確認します。

カード番号/会員番号/電話番号/承認番号/氏名/住所/ポイント会員情報

今回のGASプロンプトでは、これらを家計データへ出力しないように指示します。

ただし、AIへ送信する前の原本画像自体に情報が含まれている可能性があります。

必要のない部分は撮影しない、折る、隠す、画像を加工するという方法があります。

13.ここまでの準備チェックリスト

第3回へ進む前に、次の項目を確認してください。チェックが全部揃うと +10XP です。

Drive Sheets Data GAS Geminiの5カテゴリすべてにチェックが入った初期設定完了チェックリスト

すべて準備できれば、次はGASコードを貼り付けます。

🎯 理解度チェッククイズ(全4問)

各問正解で +7XP。全問正解で「👑全問正解」バッジを獲得できます。

Q1. フォルダIDとAPIキーの違いとして正しいのは?

どちらも同じ情報で、呼び方が違うだけ フォルダIDは処理対象を示す住所、APIキーはGeminiへ接続する鍵 フォルダIDの方が機密性が高い

Q2. スクリプトプロパティに登録するAPIキーのプロパティ名は?

API_KEY GeminiApiKey GEMINI_API_KEY

Q3. スプレッドシートのURLで、GASの設定に使うのはどの部分?

edit#gid=123456789 の数字 /d/ と /edit の間にある文字列 URLの末尾の拡張子

Q4. 今回のGeminiモデルが対応している機能として正しいのは?

テキスト入力のみで画像には対応しない 画像・PDFの入力と、JSON形式に固定する構造化出力に対応 Googleスプレッドシートへ直接書き込む機能を内蔵している

❓ よくある質問

Q. 429 RESOURCE_EXHAUSTEDエラーが出たらどうすればいいですか?
無料枠の利用上限(1分・1日あたりの回数や処理量)を超えた可能性が高いエラーです。少し時間を空けてから再実行するか、一度に処理する枚数を減らして試してください。頻繁に発生する場合は、Google AI Studioで現在の無料枠の条件と課金設定を確認しましょう。
Q. コンテナバインド型ではなく独立型Apps Scriptを使う理由は?
コンテナバインド型は特定のスプレッドシートに紐づきますが、独立型はスプレッドシートIDをコード上で明示的に指定します。今回のように処理対象を明確にしたい場合や、将来的に複数のシートを扱う可能性がある場合、独立型の方が管理しやすくなります。
Q. フォルダIDが他人に知られると危険ですか?
フォルダIDだけでは、共有設定がされていない限り他人がフォルダの中身を自由に閲覧できるわけではありません。ただし、APIキーのような認証情報ではないとしても、記事やSNSへ積極的に公開する必要はない情報です。むやみに公開しないようにしましょう。

解決ドットコム ワンポイント

自動化を作るときは、いきなりコードを動かすよりも、先に情報の置き場所を整理することが重要です。

今回の仕組みでは、次の役割を分けました。

コードを書く前にGoogle Drive Googleスプレッドシート Google Apps Script Gemini APIの4つの役割を分けて整理する図
Google Drive =原本を保存する場所
Googleスプレッドシート =確定前の家計データを確認する場所
スクリプトプロパティ =APIキーを保存する場所
GAS =各サービスをつなぐ処理
Gemini =画像とOCR文字を整理する処理

APIキーをスプレッドシートへ書いたり、レシート画像と家計データを同じ場所へ無秩序に保存したりすると、あとで管理が難しくなります。

問題を解く前に、まず整理する。

自動化でも、最初に役割と保存先を分けることで、エラーが起きた場所を確認しやすくなります。

🐤
カイピヨくんの一言
コードを書く前に、フォルダ・データ・鍵の置き場所を分けておくピヨ。
フェーズ1完了 ツールとデータの置き場所の整理が完了 次回第3回はGASコードを実装し自動化システムを起動させます
📚 次回(第3回)予告
GASコードを実装し、自動化システムを起動させます。Config.gs/Setup.gs/OCR.gs/Gemini.gs/Main.gs/Spreadsheet.gs/Utils.gs/appsscript.jsonを、コピーしてそのまま使えるように全文掲載します。

\ 最新情報をチェック /