BigQuery を使用して Gemini と Google スプレッドシートを統合する方法
Karl Weinmeister
Head of Cloud Product DevRel
※この投稿は米国時間 2024 年 6 月 8 日に、Google Cloud blog に投稿されたものの抄訳です。
私は Google スプレッドシートをよく使用します。かなり頻繁に使用している方もいらっしゃるでしょう。私はさまざまな用途に Gemini も活用しているため、Gemini を Google スプレッドシートのワークフローに組み込むのはまさに理にかなっています。
スプレッドシートの要約や数式の作成などの機能を使用すれば、スプレッドシートでの生産性を向上させることができます。Google AI One プレミアム プランでは、Gmail、ドキュメント、スプレッドシートで Gemini を使用できるようになりました。
これらの組み込み機能を利用して、カスタム インテグレーションで何が可能になるかを見ていきましょう。たとえば、Gemini を使用して、一度に複数のデータ行を生成または拡充するにはどうすればよいでしょうか。このブログ投稿では、この処理を行う手順をご紹介します。
以下のデータセットを可視化します。オンライン小売店データセットを使用して、商品説明から新しい列に色を抽出します。この新しい列により、お客様は色フィルタを使用して、探しているものを簡単に見つけられます。
直接的なアプローチ
では、スプレッドシートから Gemini API を呼び出す方法を見てみましょう。ここで使用する Google Workspace の主要な関数は、urlFetchApp です。この関数は、HTTP リクエストの作成やウェブ コンテンツの取得に使用できます。これを使用して、ヘッダー、タイムアウトの設定、リダイレクトの追跡、認証の処理をカスタマイズできます。
urlFetchApp を使用して、モデルとエンドポイントを渡して、generateContent REST API を呼び出すことができます。
POST https://{service-endpoint}/v1/{model}:generateContent
必要な手順はすべて、こちらの Google スプレッドシートのカスタム関数に記載されています。サービス アカウントを設定して Apps Scripts プロパティを構成すると、2 つの入力、プロンプトに含めるセルの範囲、そしてプロンプトを含むカスタム関数が作成されます。
関数自体が、これらのパラメータをプロンプトに埋め込みます。
この関数によって呼び出されたヘルパー関数が、認証と HTTP リクエストの作成を処理します。
実際の動作を確認されたい方は、Google Cloud Next 2024 セッション Apps Script and Gemini: Build custom AI-powered Google Workspace solutions(Apps Script と Gemini: AI を活用したカスタムの Google Workspace ソリューションを構築する)をご覧ください。このスクリプトの AI Studio バージョンもご覧いただけます。
BigQuery を介したインテグレーション
次に、BigQuery を Apps Script と Gemini 間のブローカーとして使用する方法を見てみましょう。これは、大規模なデータセットや、ユーザーが BigQuery とスプレッドシートをすでに統合している場合に適した強固なアプローチです。
Google Cloud の BigQuery Apps Script サービスは、BigQuery のオブジェクトと関数、およびスプレッドシートで直接クエリを実行する機能を提供します。
このサービスを使用して、BigQuery はデータの列全体で、Vertex AI の Gemini Pro モデルに対して直接リクエストを行うことができます。BigQuery で行う必要があるのは、使用するモデルを指定して、モデルのエンドポイントを作成するだけです。
このプロセスは次のように表すことができます。
プロセスの概要
このインテグレーションでは、カスタム関数ではなく、Apps Script 関数にリンクされたメニュー項目を作成します。前述したような関数を作成することもできますが、ここでは別のスタイルを検討します。
まず、生の入力データを見てみましょう。このシナリオでは、製品説明から色を抽出します。
説明(C2):
WHITE HANGING HEART T-LIGHT HOLDER
次に、入力データと連結した、指示を含むプロンプト列を作成します。
ColorPrompt (I2):
"Extract the color(s) from the product description, all in capital letters... If there are multiple, return a valid comma separated list of colors (without the word and). Here is the product description: " & C2
このプロンプトからの回答例を以下に示します。これはプロンプトセルのすぐ右のセルに入力されます。
色(J2):
WHITE
これを行うには、プロンプトセルを選択した状態でメニューから [クエリ] を選択します。
仕組み
メニューは onOpen() トリガーで作成され、各メニュー項目はクラウドベースの JavaScript プラットフォームである Apps Script の関数にリンクされます。
ソリューションの核となるのは、BigQuery の ML.GENERATE_TEXT
関数です。クラウドベースの JavaScript プラットフォームである Apps Script から、各プロンプトと構成パラメータを使用して SQL クエリを実行できます。
回答は任意の順序で返されるため、それらをマップに保存して、元のプロンプトの順序と一致させることができます。プロンプト自体は一時テーブルに保存されます。スプレッドシートからクエリ文字列にすべての値を直接含めることもできますが、テーブルを使用すると、1 MB の最大クエリ長を超える大規模なデータベースを処理できます。
データセット、テーブル、エンドポイントは、setup()
関数で構成されます。ユーザーが選択したプロジェクト内で、次のように入力します。
実際に試してみる
こちらから Apps Script コードにアクセスできます。新しいスプレッドシート(sheet.new は便利な URL ショートカット)を作成し、[拡張機能] > [Apps Script] でそれを追加します。次に、BigQuery API サービスを Apps Script プロジェクトに追加します。
スプレッドシートを更新すると、メニューが表示されます。
BigQuery API をまだ有効にしていない場合は、有効にする必要があります。また、Vertex AI への BigQuery 接続を作成する必要があります。提供されるコードは、接続 ID genai-connection
を使用しています。
コードを始めて実行するときに、Google Cloud プロジェクトにアクセスするために Apps Script を認証するよう求められます。Vertex AI にアクセスするには、サービス アカウントを構成するが必要がある場合もあります。構成されていない場合は、この処理を直接行えるように、ダイアログに URL とサービス アカウントのメールアドレスが表示されます。
次のステップ
スプレッドシートから直接 Gemini でクエリを実行すると、さまざまな種類の新しいタスクが可能になることがわかりました。ここで説明したインテグレーション コードは、独自のワークフローに合わせてカスタマイズできます。
BigQuery での生成 AI の使用について詳しくは、Bookshelf Analytics の Codelab をご覧ください。Apps Script についてさらに詳しく知りたい方は、まずは 「Apps Script の基礎」再生リストをご覧ください。
Gemini モデルとスプレッドシートを統合することで、より多くのユーザーが AI のインサイトを取得して、カスタムタスクにかかる時間と労力を削減できるようになります。
ー Cloud プロダクト DevRel 担当責任者 Karl Weinmeister