当ブログではClaudeのアーティファクト機能を使って簡単なツールを作りました。アーティファクトは素晴らしい機能ですが、無料プランにおいては外部サービスとの連携に難があるという弱点があります。
外部連携を無料で試してみたいという人向けに、今回の記事では冷蔵庫の食材をスプレッドシートに入力すると、ボタンを押すだけでGeminiがウェブ検索の上、メニューを提案してくれるという簡易的なツールを作ります。
📋 この記事でわかること
- APIとAPIキーとは何か
- Google AI StudioでGemini APIキーを取得する手順
- APIキーの安全な管理方法と料金の仕組み
- GASでGeminiと連携するメニュー提案ツールの作り方
APIとAPIキーって何?
APIとは
APIは言うなれば「異なるソフトウェア同士をつなぐ窓口」です。
レストランに例えると、
- 客
- ウェイター → API(橋渡し役)
- シェフ
客がウェイターに「カルボナーラをください」と伝えると、シェフが調理して料理が配膳されます。レシピを知らなくても、注文するだけで料理が出てきます。

冷やし中華作って

ママ冷やし中華作ってだってさ

アンタがAPIかい
ChatGPTやGeminiによるプロンプトも裏側ではAPIが動いていますが、自分のツールにAPIを組み込むことで、ボタンひとつでAIに自動で働いてもらうことが出来るようになります。
先程のレストランで言うと客が自分のツール、シェフがGemini(AI)ということになります。
APIキーとは
APIを使うには「APIキー」が必要です。ホテルのカードキーみたいなもので、カードキーがなければ部屋には入れません。つまりAPIキーは、正規のユーザーであることを証明するため、また誰がどれだけ使ったかを管理するために必要なものです。
Gemini APIキーの取得手順
Google AI StudioでGemini APIキーを取得します。Googleアカウントがあれば簡単に取得可能です。
STEP 1 Google AI Studioにアクセス
aistudio.google.com にアクセスし、Googleアカウントでログインします。
STEP 2 APIキーを作成する
左側メニューから「Get API key」を選択し、右端の「APIキーを作成」をクリックします。
既存のGoogleプロジェクト(Default Gemini Project)を選択するか、新しいプロジェクトを作成します。名前は「Gemini学習用」など分かりやすいものにしましょう。
テストで取り敢えずAPIを体験してみたいという方は「Default Gemini Project」を選択で良いです。

STEP 3 キーをコピーして保存する
AIzaSy...から始まる文字列がAPIキーです。
後から同じキーを確認することもできますが、管理画面を閉じると全体が表示されなくなる場合がありますので、コピーして必ずメモ帳等に保存してください。
APIキーの管理と料金について
やってはいけないこと
APIキーは該当するサービスを使うための認証情報です。不正利用のリスクがありますので、下記のような行為は絶対にしないで下さい。
- ブログ記事やSNSに貼り付ける
- 他人が確認出来るコードに直接貼り付ける
- メールやLINEで他の人に送る
料金について
Gemini APIは一定量まで無料で使えます。テスト用途であれば無料枠でもある程度は使えますので、気軽に始めることが出来ます。
※無料枠を超えた場合でもお支払い情報を入力していなければ料金は発生しませんが、APIは停止します。本格的にAPIを使いたいのであれば、Google AI Studioでお支払い情報の登録と利用上限の設定を推奨します。
GAS(Google Apps Script)でメニュー提案ツールを作成
作るもの
スプレッドシートにこんな項目を用意します。
| セル | 入力内容 |
|---|---|
| B1 | 家族の人数 |
| B2 | アレルギー・苦手な食材 |
| B3 | 冷蔵庫にある食材 |
| B4 | (ボタンを押すとここにメニューが表示される) |
一度入力しておけば毎回変える必要があるのはB3(冷蔵庫にある食材)だけです。家族の人数やアレルギーはそのまま使い回しが可能です。

アレルギーだからB2にピーマンて書いといて

ピーマン嫌いなだけだろ
STEP 1 スプレッドシートを準備する

- Googleを開く
- 「Googleスプレッドシート」を選択
- 以下の通り入力する
| A列 | B列 |
|---|---|
| 家族の人数 | (例)4人 |
| アレルギー・苦手な食材 | (例)魚の骨、辛いもの |
| 冷蔵庫にある食材 | (例)鶏もも肉、キャベツ、卵 |
| 今日の夕飯 | (ここにGeminiの回答が表示される) |
STEP 2 GASエディタを開く

スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。ブラウザの別タブでGASのエディタが開きます。最初から入っているfunction myFunction() {}は全て削除してください。
STEP 3 APIキーをスクリプトプロパティに登録する
コードを貼り付ける前に、まずAPIキーを安全な保管場所に登録します。コードにAPIキーを直接書かないことで、万一コードを他の人に見せてもAPIキーが漏れない仕組みにします。


- Apps Script 左側メニューの「プロジェクトの設定」(歯車アイコン)をクリック
- 下にスクロールして「スクリプト プロパティ」の「スクリプト プロパティを追加」をクリック

3. “プロパティ”に「GEMINI_API_KEY」、”値”に取得したAPIキーを入力し
「スクリプト プロパテ ィを保存」をクリック
⚠️ プロパティ名はコードに記載の”GEMINI_API_KEY"と完全に一致させてください。
大文字・小文字・記号が一文字でも違うと動きません。
STEP 4 コードを貼り付けて保存
Apps Script 左側メニューの「エディタ」を選択し、以下のコードをそのままコピペして下さい。
function proposeMenu() {
const API_KEY = PropertiesService.getScriptProperties().getProperty("GEMINI_API_KEY");
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const prompt = `家族${sheet.getRange("B1").getValue()}人、アレルギー:${sheet.getRange("B2").getValue()}、食材:${sheet.getRange("B3").getValue()}。今日のおすすめ夕食を1品、料理名のみ答えてください。`;
const payload = {
contents: [{ parts: [{ text: prompt }] }],
tools: [{ google_search: {} }],
generationConfig: { maxOutputTokens: 500 }
};
const response = UrlFetchApp.fetch(
"https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent?key=" + API_KEY,
{ method: "post", contentType: "application/json", payload: JSON.stringify(payload), muteHttpExceptions: true }
);
const json = JSON.parse(response.getContentText());
const parts = json.candidates[0].content.parts;
let answer = "";
for (const part of parts) { if (part.text) answer += part.text; }
sheet.getRange("B4").setValue(answer);
}
貼り付け後、エディタ上部のフロッピーディスクアイコン(または Ctrl+S)で保存します。プロジェクト名を聞かれたら「メニュー提案ツール」など分かりやすい名前を付けてください。
STEP 5 ボタンを作る
スプレッドシートに戻り、メニューから「挿入」→「図形描画」を選択します。

- 好きな図形(四角形など)を描く
- 図形の中に「メニュー提案!」と文字を入力
- 「保存して閉じる」をクリック
- 配置された図形の右上「・・・」→「スクリプトを割り当て」を選択
- 「proposeMenu」と入力して「確定」をクリック





これでボタンが完成です!
STEP 6 実行する
- B1〜B3に家族の情報と冷蔵庫の食材を入力する
- 作成したボタンをクリック
- しばらく待つとB4セルにGeminiの献立提案が表示される


初回の対処について
初回は「認証が必要です」というポップアップが出るので「OK」をクリックします。
次に”このアプリはGoogleで確認されていません”という警告が出ることがあります。これは自分で作ったスクリプトを自分で実行する際に出る通常の警告です。
「詳細」→「安全ではないページに移動」→”Googleアカウントへのアクセスを求めています”という画面が出たら”すべて選択”にチェック →「続行」をクリックすれば問題なく実行できます。





うまく動かない場合
エラーが出た場合はエラーメッセージをそのままGeminiやChatGPT、Claudeに貼り付けて聞いてみて下さい。
よくあるエラーとしては以下のケースが多いです。
- スクリプトプロパティのプロパティ名が
GEMINI_API_KEYと一致していない - APIキーの前後にスペースが入っている
ぱぴすけが遭遇したエラー
- エラーコード:429
APIキーの無料枠が有効になっていないということで、最初は支払い情報を登録しないと無料枠が使えないという話でしたが、Claudeに相談しているうちに、コード内で指定しているGeminiのモデルが無料枠を使えるモデルでは無かったことが発覚しました。コード内のモデル指定を「gemini-2.5-flash」に変更して解決しました。

- APIキーの安全性によるロック
APIキーがエディタの実行ログに残るようなコードで実行していたことが原因で、Google側のセキュリティフィルタに「キーの漏洩リスクあり」と判断されたようです。このエラーはGeminiが発見してくれました。コード内「Logger.log(“APIキー確認: ” + API_KEY);」の行を削除して解決しました。

今回はコード生成に優れたClaudeにコード生成を依頼したのですが、GASやGemini APIを使うことを考えたらGeminiにコードを生成してもらう方が最新情報の入手が早く、解決も早かったかも知れません。
いずれにしてもどちらの生成AIも問題を解決する指摘をしてくれました!
今後について
今回の記事ではAPIの取得から外部連携までを実践しました。
紆余曲折の末、結果的にAPIキーが無料枠で使えたため、Geminiからメニューの提案がきちんと返ってきました。本来は食材の下処理から調理方法までを回答してもらうつもりでしたが、回答するために消費する無料枠が大きいことと、この記事で紹介するにはコードが長過ぎるために断念しました。
メニューの提案も中には「え?」と思うものもあり、私の思い描いていたツールの使いやすさや回答のクオリティとはかけ離れています。
何はともあれ、今回は無料枠のAPIを使ったテストが出来て、良いツールを作成するのであれば、少なくとも有料でAPIを購入する必要があるということも分かりました。
今後は有料APIの購入を前提としてクオリティの高いツール作成に着手しますが、納得のいくツールが完成した際には当ブログ記事で報告したいと思います。
それでは!
