GoogleスプレッドシートでChatGPTの応答を直接セルに表示できたら便利ですよね。しかし、APIキーの設定やスクリプトの書き方がわからず困っている方も多いでしょう。この記事では、OpenAIのAPIキーを取得し、Google Apps Scriptを使ってスプレッドシート内でChatGPTに質問して応答を表示する方法を詳しく解説します。初心者の方でもステップバイステップで設定できるように、具体的なコードと手順を説明します。
【要点】ChatGPT APIをスプレッドシートで使う3ステップ
- OpenAI APIキーの取得: OpenAIのサイトでAPIキーを発行し、安全な場所に保管します。
- Google Apps Scriptのコード作成: UrlFetchAppを使ってAPIリクエストを送る関数を記述します。
- カスタム関数としての利用: シート上で=chatGPT(“質問”)と入力するだけで応答を得られるようにします。
ADVERTISEMENT
目次
ChatGPT APIをスプレッドシートから使う仕組み
スプレッドシートのセルにChatGPTの応答を表示するには、Google Apps Script(GAS)を使ってOpenAIのAPIを呼び出します。GASはJavaScriptベースのスクリプト環境で、HTTPリクエストを送るUrlFetchAppというクラスを提供しています。このUrlFetchAppを使って、OpenAIのChat CompletionエンドポイントにPOSTリクエストを送信します。リクエストにはモデル名やプロンプト、最大トークン数などのパラメータを含めます。APIからはJSON形式のレスポンスが返ってくるので、それをパースして応答テキストを抽出し、セルに表示するようにします。この一連の処理をカスタム関数として定義することで、シート上で通常の関数と同じように使えるようになります。つまり、=chatGPT(“こんにちは”)と入力するだけで、AIからの応答がそのセルに返ってくるのです。
ChatGPT API連携の具体的な設定手順
OpenAI APIキーを取得する
- OpenAIのサイトでアカウントを作成する
まだアカウントをお持ちでない方は、OpenAIの公式サイトでサインアップしてください。アカウント作成後、APIキーを発行するためにログインします。 - APIキーを生成する
ダッシュボードの「API Keys」セクションに移動し、「Create new secret key」をクリックします。生成されたキーをコピーして、安全な場所に保存してください。このキーは一度しか表示されないため、必ずメモしておきましょう。
Google Apps Scriptを開いてコードを書く
- スプレッドシートを開き、拡張機能メニューを操作する
対象のスプレッドシートを開き、メニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - プロジェクトに名前を付ける
エディタ左上の「無題のプロジェクト」をクリックして、わかりやすい名前(例:ChatGPT連携)を入力します。 - コードを記述する
デフォルトのコードをすべて削除し、以下のコードを貼り付けてください。
function chatGPT(prompt) {
const apiKey = 'YOUR_API_KEY'; // ここに取得したAPIキーを貼り付け
const url = 'https://api.openai.com/v1/chat/completions';
const model = 'gpt-3.5-turbo'; // モデルは必要に応じて変更
const data = {
model: model,
messages: [{role: 'user', content: prompt}],
max_tokens: 500
};
const options = {
method: 'post',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + apiKey
},
payload: JSON.stringify(data)
};
const response = UrlFetchApp.fetch(url, options);
const result = JSON.parse(response.getContentText());
return result.choices[0].message.content.trim();
}
- プロジェクトを保存する
「保存」アイコン(フロッピーディスク)をクリックするか、Ctrl+Sで保存します。初回保存時にはプロジェクト名の確認が表示されます。 - 関数をテスト実行する
関数のドロップダウンから「chatGPT」を選択し、「実行」ボタンをクリックします。初回実行時には権限の承認が求められます。自分のアカウントを選び、必要な権限(外部サービスへのアクセスなど)を承認してください。実行が成功すれば、ログに応答が表示されます。
シート上でカスタム関数として利用する
- スプレッドシートに戻る
スクリプトエディタのタブを閉じ、元のスプレッドシートに戻ります。 - セルに関数を入力する
任意のセルに、=chatGPT(“こんにちは、今日の天気は?”) と入力します。数秒後にChatGPTからの応答がセルに表示されます。
これで基本的な連携は完了です。ただし、APIキーがコード内に直接書かれているため、セキュリティ面で不安が残ります。次の手順で、より安全な方法に切り替えましょう。
APIキーをスクリプトプロパティに保存する(セキュリティ向上)
- スクリプトエディタを開き、プロジェクトの設定を開く
再度スクリプトエディタを開き、左側のメニューから「プロジェクトの設定」をクリックします。 - スクリプトプロパティを追加する
「スクリプトプロパティ」セクションで、「プロパティを追加」をクリックします。プロパティ名に「OPENAI_API_KEY」、値に先ほど取得したAPIキーを入力して保存します。 - コードを修正する
関数内のapiKeyの行を次のように変更します。const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
これでキーがコードから分離され、シートを共有してもキーが漏れるリスクが低減します。 - 再度テストする
修正後、再度関数を実行して動作を確認してください。同じ応答が得られれば成功です。
API連携の注意点とよくあるトラブル
APIキーが無効または間違っている場合
エラーメッセージ「Invalid API key」が表示される場合は、スクリプトプロパティまたはコード内のキーが正しいか確認してください。キーは先頭のsk-から始まる文字列です。コピー時に余分なスペースが入っていないかもチェックしましょう。
レート制限や使用量制限に達する場合
OpenAIのAPIには、1分間や1日あたりのリクエスト数に制限があります。スプレッドシートで多数のセルに関数が入力されていると、自動再計算時に大量のリクエストが発生し、制限に達する可能性があります。その場合は、max_tokensの値を小さくする、あるいはスクリプトのトリガーを使って定期的にのみ実行するなどの対策を検討してください。また、無料枠では使用量に上限があるため、有料プランへのアップグレードも選択肢です。
応答が途中で切れてしまう場合
max_tokensパラメータの値が小さいと、応答が途中で途切れます。コード内のmax_tokensの数値を増やしてください。ただし、トークン数が多いほどAPIの使用量が増えるので、バランスを考えて設定しましょう。
権限エラーが発生する場合
スクリプトを実行する際に「権限が不足しています」というエラーが出ることがあります。その場合は、スクリプトエディタのメニューから「実行」→「関数を実行」を再度行い、承認ダイアログで必要な権限を付与してください。また、スクリプトを編集した後は再承認が必要な場合もあります。
関数が#NAME?エラーを返す場合
シート上で=chatGPT(…)と入力した際に、関数名が認識されない場合は、スクリプトが正しく保存されていないか、プロジェクトが別のものになっている可能性があります。スクリプトエディタで関数名が定義されていることを確認し、スプレッドシートを再読み込みしてみてください。
ADVERTISEMENT
直接記述とスクリプトプロパティの比較
| 方法 | セキュリティ | 利便性 | 推奨用途 |
|---|---|---|---|
| コードに直接記述 | 低い | 簡単で直感的 | テスト・個人利用 |
| スクリプトプロパティ | 高い | 設定が少し手間 | 本番環境・共有シート |
まとめ
この記事では、ChatGPTのAPIをGoogleスプレッドシートに連携し、セル内に応答を表示する方法を解説しました。APIキーの取得からGoogle Apps Scriptでのコード作成、カスタム関数としての利用まで、一連の流れを理解できたでしょう。特にスクリプトプロパティを使ったセキュアなキー管理は、安全に運用するために重要なポイントです。また、max_tokensの調整やエラー対処法を知っておけば、実用的なツールに仕上げられます。ぜひ自分の業務や趣味に合わせて、プロンプトを工夫してみてください。例えば、複数のセルに異なる質問を用意して一括で回答を得るなど、応用範囲は広がります。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
