ADVERTISEMENT

【Googleスプレッドシート】Geminiの結果をシートに直接出力!Gemini API呼び出しの実装

【Googleスプレッドシート】Geminiの結果をシートに直接出力!Gemini API呼び出しの実装
🛡️ 超解決

Googleスプレッドシートで作業をしていると、Geminiに質問した結果をセルに取り込みたい場面がよくあります。しかし、毎回手動でコピー&ペーストをするのは手間がかかり、ミスも発生しやすいものです。そこで、Google Apps Scriptを使ってGemini APIを直接呼び出し、その結果をシートに自動出力する方法を解説します。この記事を読めば、スプレッドシート上でGeminiの回答をリアルタイムに取得できるカスタム関数を実装できるようになります。

【要点】Gemini APIをスプレッドシートで使うための3つのステップ

  • APIキーの取得と有効化: Google AI StudioからAPIキーを発行し、Generative Language APIを有効にします。
  • Apps Scriptでのスクリプト記述: UrlFetchAppを使ってHTTPリクエストを送信し、Geminiの応答をパースします。
  • カスタム関数として呼び出し: 作成した関数をシート上で「=GEMINI(“プロンプト”)」のように使えるようにします。

ADVERTISEMENT

Gemini APIをスプレッドシートで呼び出す仕組み

Gemini APIはGoogleが提供する生成AIのAPIで、テキスト生成や画像認識などの機能を持っています。これをスプレッドシートから呼び出すには、Google Apps ScriptのUrlFetchAppクラスを使用します。Apps ScriptはGoogleのサービスを自動化するためのスクリプト環境で、スプレッドシートに組み込まれています。スクリプト内でAPIリクエストを組み立て、レスポンスをJSONとして解析することで、Geminiの回答をセルに格納できます。

この仕組みを使えば、大量のプロンプトを一括処理したり、条件に応じて質問内容を動的に変えたりすることが可能です。また、トリガーを設定すれば定期的にAPIを呼び出す自動化も実現できます。

Gemini APIを実装する具体的な手順

1. APIキーの準備

  1. Google AI Studioにアクセスする
    ブラウザで https://aistudio.google.com/ を開き、Googleアカウントでログインします。
  2. APIキーを作成する
    左側のメニューから「APIキー」を選択し、「APIキーを作成」ボタンをクリックします。そのキーは後でスクリプトで使用するので、安全な場所にコピーしておきます。
  3. Generative Language APIを有効にする
    Google Cloud Consoleで「Generative Language API」を検索し、プロジェクトに対して有効にします。先ほど作成したAPIキーがこのAPIに対して許可されていることを確認します。

2. Apps Scriptでスクリプトを記述する

  1. スクリプトエディタを開く
    スプレッドシートを開き、メニューから「拡張機能」→「Apps Script」を選択します。
  2. スクリプトを記述する
    エディタに以下のコードを貼り付けます。APIキーやモデル名は適宜変更します。
    function GEMINI(prompt) {
      const apiKey = 'あなたのAPIキー';
      const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateContent?key=${apiKey}`;
      const payload = {
        contents: [{
          parts: [{ text: prompt }]
        }]
      };
      const options = {
        method: 'post',
        contentType: 'application/json',
        payload: JSON.stringify(payload)
      };
      try {
        const response = UrlFetchApp.fetch(url, options);
        const data = JSON.parse(response.getContentText());
        if (data.candidates && data.candidates[0].content.parts[0].text) {
          return data.candidates[0].content.parts[0].text;
        } else {
          return '応答が空です';
        }
      } catch (e) {
        return 'エラー: ' + e.message;
      }
    }
  3. プロジェクトを保存する
    フロッピーディスクアイコンをクリックするか、Ctrl+Sで保存します。

3. シートでカスタム関数を使う

  1. カスタム関数を呼び出す
    スプレッドシートに戻り、任意のセルに「=GEMINI(“今の東京の天気を教えてください”)」と入力します。
  2. 結果を確認する
    数秒後、セルにGeminiからの回答が表示されます。初回は認証画面が表示される場合があるので、許可を行います。
  3. セル参照を使う
    プロンプトを別のセルから参照することもできます。例えばA1セルに質問文がある場合、「=GEMINI(A1)」と入力すれば、A1の内容をプロンプトとして送信します。

Gemini API呼び出しでよくあるトラブル

APIキーの認証エラーが発生する

原因は、APIキーが正しく設定されていないか、Generative Language APIが有効になっていないことです。まずAPIキーが正しいか確認し、Google Cloud ConsoleでAPIが有効になっているかチェックします。また、APIキーに制限(IPアドレスやHTTPリファラ)がかかっている場合、Apps Scriptからのアクセスがブロックされることがあるので、制限を緩めるか解除します。

レート制限に達してしまう

Gemini APIには無料枠の呼び出し回数制限があります。短時間に大量のリクエストを送ると「429 Too Many Requests」エラーが返ってきます。対処法として、Utilities.sleep()を使ってリクエスト間に待機時間を入れたり、トリガーの実行間隔を調整したりします。また、有料プランにアップグレードして制限を引き上げることも検討します。

関数がタイムアウトする

Apps Scriptの実行時間は最長6分、またUrlFetchAppのタイムアウトはデフォルトで60秒です。大規模なプロンプトや長い応答を扱うとタイムアウトする可能性があります。その場合は、タイムアウト値をoptionsに追加して調整します。例えば「options.muteHttpExceptions = true;」としてエラーを無視するか、「options.timeout = 120;」でタイムアウト時間を延ばします。

応答が途中で切れてしまう

Geminiの応答には最大出力トークン数が設定されています。デフォルトでは2048トークン程度ですが、必要に応じてgenerationConfigでmaxOutputTokensを指定できます。リクエストのpayloadに「generationConfig: { maxOutputTokens: 8192 }」を追加すると、より長いテキストを取得できます。

ADVERTISEMENT

手動コピペとAPI自動出力の比較

項目 手動コピペ方式 API自動出力方式
作業の手間 都度コピペが必要で、時間がかかる 一度設定すれば自動で取得できる
更新のしやすさ 質問内容が変われば再度実行し直す必要がある セル参照で動的にプロンプトを変更できる
エラーのリスク コピー漏れやフォーマットのずれが起きる APIの応答をそのまま取得するため、ヒューマンエラーが少ない
大量処理の可否 手作業では数十件が限度 スクリプトで数百件でも一括処理できる
必要な知識 特に必要なし Apps Scriptの基礎とAPIの仕組みを理解する必要がある

まとめ

この記事では、GoogleスプレッドシートからGemini APIを直接呼び出して結果をセルに出力する方法を解説しました。APIキーの取得からApps Scriptを使ったカスタム関数の実装まで、一連の手順を踏むことで、手作業によるコピペから解放されます。応用として、プロンプトテンプレートを活用して定型文を生成したり、IMPORTXMLと組み合わせて外部データと連携したりすることも可能です。まずは簡単な質問から試し、徐々に処理の自動化を進めてみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。