スプレッドシートでChatGPTを使うためのAppScript

スプレッドシートのセルの内容を、一括で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を開き、以下のコードを貼り付けます。

js
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です。

あなたへのおすすめ