スプレッドシートのセルの内容を、一括でChatGPTに投げたい場合などに使える、AppScriptになります。
スプレッドシートの拡張機能でも簡単に連携できますが、得体の知れない拡張機能はあまり好きではないので、AppScriptでGPTを呼び出すようにしています。
Chat Playgroundでの事前準備
アカウントの作成とクレジットカートの登録
ChatGPTのAPIを使うためには、openAIのplatformにて、アカウントの作成とクレジットカートの登録をする必要があります。
以下のサイトにアクセスして、アカウントの作成とクレジットカードの登録を行なってください。
https://platform.openai.com/docs/overview
API Keysの作成
サイドバーの「API Keys」をクリックし、「Create New Secret Key」をクリックします。
「Name」の欄に、適当な名前を付けます。
なんでもOKですが、今回はスプレッドシート用なので「spreadsheet」と入れています。
「Create secret key」をクリックすると、以下の画面が表示されます。
ここで表示されるシークレットキーは、今後で使うのでコピーしておきます。
この画面は消してしまうと2度と表示することはできないので、どこかに保存しておきましょう。
(なお、外部に流出すると勝手に使われてしまう可能性があるので、流出しないように取り扱いには注意してください)
クレジットの購入
右上のアカウントのアイコンをクリックして、「Your profile」をクリックします。
「Billing」から、「Add to credit balance」をクリックして、お好みのクレジットを購入します。
以前はクレジットによる前払い制ではなく、使用した分だけ請求という形をとっていました。
(上限を決めることはできました)
しかし、いつからか前払い制に変更されていました。
こちらの方が安心して使用できるので、良い変更だと思います。
スプレッドシートでAppscriptの作成
スプレッドシートにてAppScriptを開き、以下のコードを貼り付けます。
const API_KEY = 'sk-XXXXXXXXXXXXX'; // OpenAI APIキーをここに貼り付けます
function callChatGPT(prompt) {
const url = 'https://api.openai.com/v1/chat/completions';
const payload = {
model: "gpt-3.5-turbo",
messages: [{role: "user", content: prompt}],
max_tokens: 100
};
const options = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': 'Bearer ' + API_KEY
},
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const json = response.getContentText();
const data = JSON.parse(json);
if (data.error) {
if (data.error.code === 'quota_exceeded') {
return 'Error: You exceeded your current quota, please check your plan and billing details.';
} else {
throw new Error(data.error.message);
}
}
// return "This is a test response for: " + prompt;
return data.choices[0].message.content.trim();
}
function GPTFunction(prompt) {
return callChatGPT(prompt);
}
API_KEYの箇所は、先ほど作成したAPI Keyを入力してください。
AppScriptを保存して、スプレッドシートにて=callChatGPT("ここにプロンプトを入力")とすると、AIからの回答が返ってきます。
なお、上記のコードもChatGPTで出力しています。
また、モデルを変更したい場合は、model: "gpt-3.5-turbo",の箇所を
model: "gpt-4o",
model: "gpt-4-turbo",
model: "gpt-4",
model: "gpt-3.5-turbo-16k"
のように変更すればOKです。