フォーム読み込み中
Google Workspaceは、多くの企業で業務の基盤として活用されているツールです。その機能を拡張する手段の一つとして、Google Cloudが提供するAI モデルGeminiと、Google Workspaceの各種サービスを連携させるGoogle Apps Script (GAS)の組み合わせがあります。
GASは、Google Workspace上でスプレッドシートなどのGoogle Docs製品と連携して使用するイメージが強いですが、外部のAPIを呼び出すことでデータを取得したり、この記事のように生成AIにテキスト生成をリクエストすることもできます。
この記事では、GASを使ってGemini APIを呼び出し、Google Workspace環境でGeminiの機能を活用するための手順と注意点を紹介します。
Gemini APIは、Google Cloudが提供する Geminiモデルへのアクセスを提供するAPIです。Geminiは、テキスト、画像、音声など、多様なモダリティに対応し、高度な自然言語処理能力や生成能力を備えています。Gemini APIを利用することで、開発したプログラムやアプリケーションなどからGeminiによるテキスト生成を行うことができ、生成AI活用の幅を広げることができます。
APIでGeminiを利用するには、この記事で紹介するGemini APIと、Gemini以外の他のモデルを利用したり、モデルのチューニングやデプロイもできるVertex AIプラットフォーム経由で利用するVertex AI APIがあります。
この記事では説明をシンプルにするためGemini APIを使用しますが、基本的な考え方は Vertex AI APIを利用する場合にも応用可能です。
まず、APIキーによるAPI認証方法について説明します。
APIキーは、外部APIを利用するための認証情報です。Gemini APIを利用する際、APIキーによりGemini APIの利用を許可されたユーザーであることを認証し、APIへの不正なアクセスを防ぐ役割を果たします。
APIキーによる認証は、OAuthなど他の認証手段に比べ実装が簡潔となります。一方でAPIキー自体は単なる文字列であることから、露出した場合は容易にコピーされてしまいます。特に外部に流出してしまった場合、APIを不正に使用されるリスクがあるため取り扱いには注意が必要です。
APIキーの取り扱いの注意点については記事中で解説します。
次に、Google Cloudプロジェクト上でAPIキーを取得する方法を解説します。
APIキーを取得するには、Google Cloudプロジェクトへのアクセス権とAPIキーの取得権限が必要となります。また、APIを有効化するための権限も必要となります。既存のプロジェクトへアクセスしてAPIキーを取得する場合、ユーザーが意図せず編集を加えることで稼働中のリソースへ影響する可能性があるため、操作には注意が必要です。このため、目的に応じたプロジェクトを作成することを推奨します。
Gemini APIを使用する権限を含む以下の事前定義ロールを紹介します。
Service Usage管理者
プロジェクト上のAPIを有効化・無効化する権限
APIキー管理者
プロジェクト上でAPIキーを作成・編集・削除する権限
自身がこれらの権限を持たない場合は、Google Cloud管理者に連絡して権限を付与してもらうか、本節の手順を管理者に依頼しAPIキーを取得してください。
Google Cloudコンソールから以下の手順でGemini APIを有効化します。
1. Google Cloudコンソールの「APIとサービス」で「APIとサービスを有効にする」をクリック
2. APIライブラリで「Gemini API」 を検索
3. 「Gemini API」を選択し「有効にする」ボタンを押す
次に、APIキーを作成し、Gemini APIを呼び出すための設定を行います。
1. Google CloudコンソールでAPIとサービス > 認証情報 にアクセス
2. 認証情報を作成 > APIキー をクリック
3. 「作成されたAPIキー」ダイアログにAPIキーが表示されるので、コピーして控えておく
4. ダイアログは閉じる
5. 一覧にAPIキーが表示されるので、該当のAPIキーを「操作」メニューから「APIキーを編集」をクリック
6. APIキーの名前を変更する(今回は「APIKeyForGemini」とします)
7. 「APIの制限」で「キーを制限」を選択し、プルダウンより「Generative Language API」をチェックし「OK」をクリック
8. 「保存」をクリック
ここまでで、APIキーを作成し、APIキーによって呼び出せるAPIの設定ができました。
ここからは作成したAPIキーを用いて、Apps ScriptからAPIを呼び出すプログラムを作成していきます。
Apps Scriptは、Google Drive上で動作するJavaScriptベースのコード実行プラットフォームです。Google Workspaceユーザーは無料で使用することができ、Google DocumentsやSpreadSheetsなどのGoogle Workspaceのリソースと連携する簡単なアプリケーションを作成することができます。
Google Apps ScriptのコードはApps Scriptプロジェクトに記述します。Apps Scriptプロジェクトは単独ファイルで動作するスタンドアロン型と、特定のスプレッドシートやDocumentと紐づけて動作するコンテナバインド型がありますが、この記事では汎用性の面から単独ファイルで動作するスタンドアロン型で解説します。以下の手順でApps Scriptプロジェクトを作成します。
1. Google Driveへアクセスし、新規 > その他 > Google Apps Sript を選択します。
2. マイドライブにApps Scriptプロジェクトが作成されるので、任意の名前に変更します。
3. Apps Scriptプロジェクトを開きます。
APIキーをGASから呼び出して使用するために、Apps Scriptプロジェクトへスクリプトプロパティを設定します。
スクリプトプロパティは、Apps Script プロジェクトに紐づいた Key-Value 形式のデータを保存できる機能です。APIキーなどの機密情報を安全に運用するために利用します。
先述の通り、APIキー自体は単なる文字列であるため、これをGASのプログラム中に直接記述して保存することもできますが、プロジェクト(またはプログラム)をコピーすることでAPIキーも同時にコピーされてしまいます。この方法はAPIキーの流出リスクが高まるため避けた方がよいでしょう。
スクリプトプロパティを使用すれば、プロジェクトをコピーしたとしてもAPIキーがコピーされることは無いため、より安全です。
スクリプトプロパティは以下の手順で設定します。
1. Apps Scriptプロジェクトのサイドバーから「プロジェクトの設定」をクリックします。
2. スクリプトプロパティ タブを開き、キーに任意のプロパティ名(今回は「GEMINI_API_KEY」とします)、値に取得したAPIキーを設定します。
APIキーは、外部に漏洩しないように厳重に管理してください。
APIキーは、スクリプトプロパティに設定する。スクリプトプロパティに設定したAPIキーはログの出力に含めないようにするなど、必要な場合にのみ読み出すようにしてください。
Apps Scriptプロジェクトは他のユーザーと共有することができますが、範囲は最小限にしてください。
Gemini APIを利用するためにプログラムを作成していきます。
1. Apps Scriptプロジェクトを開き、ファイル > ファイルを追加 > スクリプト を選択します
2. 下記のコードをコピーし、エディタ領域に貼り付けます。
3. 「保存」します。
function callGeminiApi(prompt) {
// モデルの設定
const modelName = "gemini-1.5-pro";
// APIキーの参照
const apiKey = PropertiesService.getScriptProperties().getProperty('GEMINI_API_KEY');
// APIの呼び出しURL
const url = `https://generativelanguage.googleapis.com/v1beta/models/${modelName}:generateContent?`
// APIの呼び出しオプション
const options = {
'method': 'post',
'contentType': 'application/json',
'headers': {
'x-goog-api-key': apiKey
},
'payload': JSON.stringify(
{
'contents':
{
'parts': [
{ 'text': prompt },
]
,
}
}
)
};
// API呼び出しと結果の取得
try {
// APIの呼び出し
const response = UrlFetchApp.fetch(url, options);
// レスポンスをJSONオブジェクトにパーシング
const jsonResponse = JSON.parse(response.getContentText());
// 生成されたテキストを取得し返却
const answerText = jsonResponse.candidates[0].content.parts[0].text;
return answerText;
}
catch (error) {
// エラー時の処理
console.log(error);
return '回答を取得できませんでした。';
}
}
function main() {
//Gemini APIの呼び出し関数を実行
const prompt = '桃太郎のお話を語ってください'
const answerText = callGeminiApi(prompt);
// 生成されたテキストをもとにDocumentを作成
const doc = DocumentApp.create('桃太郎の物語');
doc.getBody().appendParagraph(answerText);
}
コード全体を見ると長く感じますが、API呼び出しそのものは31行目に記載のUrlFetchApp.fetch() メソッドによって実行している点に注目してください。UrlFetchApp.fetch()は、Apps Scriptから外部のAPIを呼び出すために利用できる汎用的なメソッドです。こちらの詳細はApps Scriptの公式ドキュメントを参考にしてください。Gemini APIを呼び出す際にも、このメソッドを使用します。
このコードではテキストのみを送信していますが、temperature、topPなどの推論パラメータの指定や、画像ファイルなどを同時に送信することで様々な条件に基づき生成を行うこともできます。テキスト生成の際にどのような処理を行うことができるかは、Gemini APIの公式ドキュメントで確認できますのでこちらも参考にしてください。
APIキーを利用してAPIを呼び出す際、主に以下の2通りがあります。
クエリパラメータの引数に設定する
リクエストヘッダーのプロパティに設定する
この記事ではリクエストヘッダーのプロパティにAPIキーを設定することを推奨します。上記で紹介したコードでは「x-goog-api-key」プロパティにAPIキーを設定しています。
クエリパラメータを利用する場合、リクエストURLがログデータなどに残ることでAPIキーの流出リスクが高まります。今回使用するGemini APIに限らず、APIキーをリクエストヘッダーに設定できる場合はそちらの方が無難です。クエリパラメータ、リクエストヘッダーどちらにAPIキーをセットできるかは、呼び出すAPIに依存しますので、利用前に確認されることをお勧めします。
実際にリクエストするには、作成したmain関数をGASのエディタから実行します。生成させたい内容は自然言語で記述しますが、ここでは「桃太郎のお話しを語ってください」とリクエストしています。また、生成したテキストはGoogle Documentへ出力します。
無事にGemini APIを呼び出して生成されたテキストを取得し、Google Documentへ出力することができました。
APIキーへのアクセスは必要最小限にする
Apps ScriptプロジェクトはGoogle Drive上で共有ができます。APIキーだけでなく作成したコードを保護するためにも共有は必要最小限にしましょう。
Google Cloudプロジェクトで作成したAPIキーは、他ユーザーに権限があれば閲覧できてしまいます。こちらについても必要最小限の権限付与にとどめましょう。
APIキーはクエリパラメータではなくリクエストヘッダーに記述する
Apps ScriptプロジェクトではAPIキーはスクリプトプロパティに保存し、コードを共有するときはプロジェクトのコピーを作成する
この記事ではGemini APIとGASを連携させることで、Google Workspace環境でGeminiを安全に活用する方法を紹介しました。
今回はGemini APIを利用するにあたっての準備事項やセキュリティ面を中心にお伝えしたため、これだけでは何に使うのか想像しづらいと思います。具体的なユースケースについては、下段の関連記事も参照いただければ幸いです。これらの記事ではGoogle Workspaceから画像、音声、動画をGeminiで処理するユースケースを紹介しています。
Gemini APIとGASを組み合わせ、Google Workspace環境から様々な活用事例を生み出しましょう!
Google サービスを支える、信頼性に富んだクラウドサービスです。お客さまのニーズにあわせて利用可能なコンピューティングサービスに始まり、データから価値を導き出す情報分析や、最先端の機械学習技術が搭載されています。
Google スプレッドシート、Gmail、Google カレンダー、Google Chat、Google ドライブ、Google Meet などのさまざまなサービスがあらゆる働き方に対応する業務効率化を実現します。
条件に該当するページがございません