ChatGPTとスプレッドシートを連携する方法:GASとChatGPT APIを活用して作業を効率化
「ChatGPTとスプレッドシートを連携させて業務をもっと効率化したいけれど、その方法が分からない…。」
そんな方のために、この記事ではChatGPTとスプレッドシートの基本的な連携方法をご紹介します。
Google Apps Script(GAS)とChatGPT APIを活用すれば、スプレッドシート上で質問やタスクを一括して処理し、ChatGPTからリアルタイムで回答を得ることができるようになります。
ChatGPTとスプレッドシートの連携
- APIを介してデータをやり取り
- Google Apps Script(GAS)を使用
- API利用には料金がかかる
ChatGPTとスプレッドシートの連携は、API(Application Programming Interface)を使って行います。
APIは、2つの異なるシステムがデータをやり取りできるようにするためのインターフェースです。
Google Apps Script(GAS)を通じて、スプレッドシートからChatGPTにプロンプトを送信し、APIを介して得られた応答をスプレッドシートに表示します。
ChatGPT APIには使用量やコストに関する制限があります。(OpenAIの料金ページ)
APIリクエストの頻度やデータ量が増えると、利用料金が発生するため注意が必要です。
連携の手順
スプレッドシートとChatGPTを連携させるための手順をご説明します。
APIキーの取得
OpenAIプラットフォームにアクセスします。
既にアカウントがある場合は、「Log In」をクリックしてログインします。
アカウントをまだ持っていない場合は、画面右上の「Sign Up」をクリックして新規登録を行います。
ログイン後、OpenAIの管理画面に移動します。
画面右上の「Dashboard」を開きます。
画面左側の「API keys」を開きます。
画面中央の「Create new secret key」 を開きます
APIキーの名前を入力します。
英語・日本語どちらでもOKで、好きな名前を設定します。
その後、「Create secret key」 を押します。
作成されたAPIキーが表示されます。
このキーは一度しか表示されないため、コピーして安全な場所に保存します。
- APIキーを紛失しても同じものを再取得できません。
ですが、新しいキーを作成できます。 - APIキーを共有したり公開しないように注意。
誰かがそのAPIキーを不正に使用すると、コストがかかる場合があります。
これで、APIキーを取得し、利用できる準備が整います。
GASスクリプトの作成と実行
次に、Google Apps Script(GAS)を使ってスプレッドシートとChatGPTを連携させるためのスクリプトを作成します。
ここでは、ChatGPTのAPIキーをスクリプトプロパティに保存して利用する方法を紹介します。
スクリプトプロパティを使うことで、APIキーをコード内に直接書かず、セキュリティを保ちながらスクリプトを管理できます。
Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。
エディタが開いたら、左側メニューから「プロジェクトの設定」をクリックします。
その後、「スクリプトプロパティを追加」を選択します。
プロパティフィールドにAPIキーを入力し、保存します。
- プロパティ: 好きな名前 (例:
OPENAI_API_KEY
) - 値: 取得したAPIキー(例:
sk-xxxxxx
)
プロパティ名は日本語も入力できますが、一般的には英語やローマ字を使用します。
スプレッドシートのA列に入力されたプロンプトを使い、B列にChatGPTの回答を表示
function getChatGPTResponse() {
// スクリプトプロパティからAPIキーを取得
var scriptProperties = PropertiesService.getScriptProperties();
var apiKey = scriptProperties.getProperty('OPENAI_API_KEY');
// スプレッドシートのアクティブなシートを取得
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var lastRow = sheet.getLastRow(); // 最後の行を取得
// A列の2行目から最後の行まで処理する
for (var i = 2; i <= lastRow; i++) { // 2行目から開始
var prompt = sheet.getRange(i, 1).getValue(); // A列のプロンプトを取得
// プロンプトが空でない場合にChatGPT APIにリクエストを送信
if (prompt) {
var url = 'https://api.openai.com/v1/chat/completions';
var options = {
'method': 'post',
'headers': {
'Authorization': 'Bearer ' + apiKey,
'Content-Type': 'application/json'
},
'payload': JSON.stringify({
'model': 'gpt-3.5-turbo', // 使用するモデル名
'messages': [{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": prompt}],
'max_tokens': 1000
})
};
// ChatGPT APIにリクエストを送信し、結果を取得
var response = UrlFetchApp.fetch(url, options);
var json = response.getContentText();
var data = JSON.parse(json);
// ChatGPTの回答をB列(2列目)の同じ行に表示
sheet.getRange(i, 2).setValue(data.choices[0].message.content.trim());
}
}
}
APIキーをプロパティに保存したら、次にスクリプトを作成していきます。
上のコードをコピーしてエディタに貼り付けます。
スクリプトの説明
- スクリプトプロパティからAPIキーを取得
-
function getChatGPTResponse() { // スクリプトプロパティからAPIキーを取得 var scriptProperties = PropertiesService.getScriptProperties(); var apiKey = scriptProperties.getProperty('OPENAI_API_KEY');
- ChatGPT APIにアクセスするためのAPIキーをGoogle Apps Scriptのスクリプトプロパティに保存し、それを取得しています。
OPENAI_API_KEY
は事前に設定したプロパティ名です。
- スプレッドシートのアクティブなシートを取得・最後の行を取得
-
// スプレッドシートのアクティブなシートを取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var lastRow = sheet.getLastRow(); // 最後の行を取得
- スプレッドシートのアクティブなシートを取得:現在現在開いているスプレッドシートのアクティブなシート(現在操作しているシート)を取得します。
- 最後の行を取得:シートの中でデータが入力されている最後の行を取得します。これにより、どこまで処理するかが決まります。
- ループ処理・A列のプロンプトを取得
-
// A列の2行目から最後の行まで処理する for (var i = 2; i <= lastRow; i++) { // 2行目から開始 var prompt = sheet.getRange(i, 1).getValue(); // A列のプロンプトを取得
- ループ処理:2行目から最後の行までを順番に処理するために
for
ループを使用しています。i = 2
として2行目からスタートします。 - A列のプロンプトを取得:
sheet.getRange(i, 1)
でi行目のA列の値を取得し、その値をprompt
として扱います。このprompt
がChatGPTに送信されるテキストです。
- ループ処理:2行目から最後の行までを順番に処理するために
- 空のプロンプトをスキップ・APIリクエストの設定
-
// プロンプトが空でない場合にChatGPT APIにリクエストを送信 if (prompt) { var url = 'https://api.openai.com/v1/chat/completions'; var options = { 'method': 'post', 'headers': { 'Authorization': 'Bearer ' + apiKey, 'Content-Type': 'application/json' }, 'payload': JSON.stringify({ 'model': 'gpt-3.5-turbo', // 使用するモデル名 'messages': [{"role": "system", "content": "You are a helpful assistant."}, {"role": "user", "content": prompt}], 'max_tokens': 1000 }) };
- 空のプロンプトをスキップ:
if (prompt)
で、A列に値が入っている場合のみ処理を続けます。空白セルがある場合は無視されます。 - APIリクエストの設定:
url
:OpenAIのAPIエンドポイントを指定します。ここではhttps://api.openai.com/v1/chat/completions
を使用して、チャット形式のリクエストを送信しています。 headers
:APIキーをAuthorization
ヘッダーとして送信します。payload
:ChatGPT APIに送信するデータを設定します。messages
には、システムからの指示とユーザーの入力(prompt
)を含めます。max_tokens
はAPIから返される最大トークン数(返答の長さ)を指定します。
- 空のプロンプトをスキップ:
- リクエストの送信・レスポンスの処理
-
// ChatGPT APIにリクエストを送信し、結果を取得 var response = UrlFetchApp.fetch(url, options); var json = response.getContentText(); var data = JSON.parse(json);
- リクエストの送信:
UrlFetchApp.fetch(url, options)
でAPIリクエストを送信し、ChatGPTからの応答を取得します。 - レスポンスの処理:取得したレスポンスをJSON形式に変換し、
data
に格納します。
- リクエストの送信:
- B列に回答を出力・回答の整形
-
// ChatGPTの回答をB列(2列目)の同じ行に表示 sheet.getRange(i, 2).setValue(data.choices[0].message.content.trim()); } } }
- B列に回答を出力:
sheet.getRange(i, 2).setValue()
を使って、ChatGPTの回答を同じ行のB列に出力します。 - 回答の整形:
trim()
を使って余分な空白を取り除き、すっきりしたテキストを表示します。
- B列に回答を出力:
コードを書いたら、名前をつけて保存します。
(例:「ChatGPT連携スクリプト」)
スプレッドシートのA列にプロンプトを入力し、スクリプトを実行すると、B列にChatGPTの回答が表示されます。
スクリプトを初めて実行するときは、APIリクエストを許可するための権限が求められます。
メッセージに従って権限を許可します。
許可の詳細手順
「詳細」をクリックします。
「無題のプロジェクト(安全ではないページ)に移動」をクリックします。
「許可」をクリックします。
これでGASスクリプトを使ってChatGPTとスプレッドシートを連携する方法が完了です。
ChatGPTとスプレッドシートを連携させるメリット
ChatGPT にまとめて質問できる
一度に大量のプロンプトを処理し、回答を自動化することで作業時間を短縮できます。
ChatGPTからスプレッドシートへコピペしなくて済む
ChatGPTの回答がスプレッドシート上で表示されるため、面倒なコピー・ペースト作業がなくなります。
ChatGPT API活用の注意点
APIを使う際には以下の注意点があります。
- データの安全性:送信されるデータには機密情報が含まれないように注意し、プライバシーを守る対策が必要です。
- コスト管理:ChatGPT APIには利用料がかかるため、APIの使用量やコストを確認する必要があります。
(OpenAIの料金ページ)
まとめ
ChatGPTとスプレッドシートをAPIで連携させることで、データ処理を自動化して作業を効率化できます。
ChatGPTからスプレッドシートへの手動でのコピーペースト作業や個別に質問を入力する手間が省け、スプレッドシート上で複数のプロンプトに対する回答を一括で取得できます。
GASスクリプトを変更すれば、ChatGPTを活用してスプレッドシート内データの分類や分析を自動化することもできます。
業務の生産性を向上させたい時にぜひご活用ください。
弊社では、Google Apps Script(GAS)を活用した業務効率化のサポートを提供しております。
GASのカスタマイズやエラー対応にお困りの際は、ぜひお気軽にご相談ください。
また、ITツールの導入支援やIT導入補助金の申請サポートも行っております。
貴方の業務改善を全力でサポートいたします。
コメント