Google SpreadsheetとChatGPTを連携するツール作成方法(コピペで作成可能)

IT
スポンサーリンク

Google SpreadsheetとChatGPTを連携させることで、ChatGPTを利用して自動的に文章を生成することができます。具体的には、Google Spreadsheetに入力されたデータをChatGPTに送信し、ChatGPTが自動的に文章を生成してGoogle Spreadsheetに戻すことができます。本記事では、その連携ツールの作成手順や注意点について解説しています。

スポンサーリンク

Google SpreadsheetとChatGPTとは何か?

Google Spreadsheetの概要

Google Spreadsheetは、Googleが提供するクラウドベースの表計算ソフトウェアです。Excelなどの表計算ソフトウェアと同様に、数値や文字列などのデータを表形式で管理することができます。また、複数の人が同時に編集することができるため、チームでの作業にも適しています。

ChatGPTの概要

ChatGPTは、人工知能技術を用いた自然言語処理のプラットフォームです。ChatGPTを利用することで、自然な文章を生成することができます。また、ChatGPTは、様々な分野において活用されており、例えば、自動翻訳や自動要約などにも利用されています。
ChatGPTは無料で使うことができますが、アクセスが多いときは無料版では利用が制限されます。

ChatGPTは以下から使用できます。

Just a moment...

Google SpreadsheetとChatGPTの連携ツールの概要

Google SpreadsheetとChatGPTを連携させることで、ChatGPTを利用して自動的に文章を生成することができます。具体的には、Google Spreadsheetに入力されたデータをChatGPTに送信し、ChatGPTが自動的に文章を生成してGoogle Spreadsheetに戻すことができます。
この連携ツールを利用することで、ChatGPTの無料版がアクセスできないときにもChatGPTを使うことができます。
GPTのバージョンは、2023年3月に公開されたGPT3.5 Turboという、従来のAPIの1/10の料金のものを使っているため、安価に利用できます。

Google SpreadsheetとChatGPTの連携ツールの作成手順

OpenAIのAPI Key取得

OpenAIは、人工知能の研究・開発を行う企業であり、そのAPIを利用することで、ChatGPTの機能を使うことができます。しかし、APIを利用するためには、APIキーの取得と設定が必要です。

OpenAIが提供しているAPIキーが必要になるため、アカウントを作成して、APIキーを取得します。OpenAIのアカウントは、以下から作成できます。

Just a moment...

APIキーは以下から発行できます。

Just a moment...

具体的なAPIキーの取得方法は割愛します。以下のGoogle検索結果から探せばすぐにでてきます。

openai api key 発行方法 - Google 検索

APIキーは、第三者に知られないように管理する必要があります。また、APIキーを公開すると、不正利用される可能性があるため、注意が必要です。

最初の3ヶ月間は18ドル分まで無料で使うことができます。それ以降はクレジットカードを登録することで、有料で使うことができます。

Google Spreadsheet新規作成

  1. Googleドライブにログインします。
  2. 「新規」ボタンをクリックして、新しいドキュメントを作成します。
  3. 「Googleスプレッドシート」を選択して、新しいスプレッドシートを作成します。

GASでChatGPTを呼び出す関数作成

Google Apps Script(GAS)とは

Google Apps Script(GAS)は、Googleが提供するクラウドベースのスクリプト言語で、Googleの様々なサービスをカスタマイズするために使用されます。GASを使用すると、Googleスプレッドシート、Googleドキュメント、GoogleフォームなどのGoogleアプリケーションを自動化することができます。

Apps Scriptを開く

Googleドライブで新しいスプレッドシートを作成した後、以下の手順でGoogle Apps Scriptを開くことができます。

ツールバーから「拡張機能」を選択します。「Apps Script」をクリックします。

新しいApps Scriptプロジェクトが開きます。

GASのソースコード記載(コピペ)

以下のGASのソースコードを使用すると、ChatGPT APIを呼び出すことができます。
元から記載されているソースコードをすべて削除し、以下のコードをコピーして貼り付けてください。

// GPTに与えるデフォルトのロール
const SYSTEM_ROLE = `
あなたは関西弁の陽気なおじさんとしてロールプレイを行います。常に関西弁で話してください。
* あなたの一人称は「ワイ」です。
* ユーザを示す二人称は「あんちゃん」です。
`;
// デバッグ用質問内容
const DEFAULT_PROMPT = "投資って何から始めたらええんや。";

// OpenAIのAPIキー
const OPENAI_API_KEY = PropertiesService.getScriptProperties().getProperty("OPENAI_API_KEY");
// OpenAI APIのURL
const GPT_API_URL = "https://api.openai.com/v1/chat/completions";
// 回答のランダム性。0~2の間で設定可能。値が大きいほどランダム性が高い。
const TEMPERATUE = 0;
// 1回のAPIでの回答に許可されるトークンの最大数。デフォルトは無限。
const MAX_TOKENS = undefined;

function CHATGPT(prompt = DEFAULT_PROMPT, systemRole = SYSTEM_ROLE) {
  // 引数チェック
  if (!prompt) {
    return "GPTへの質問を入力してください。";
  }

  // OpenAI API用のリクエストデータ作成
  const requestOptions = {
    "method" : "post",
    "headers" : {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + OPENAI_API_KEY
    },
    "payload" : JSON.stringify({
      'model': "gpt-3.5-turbo",
      'messages': [
        {
          "role": "system",
          "content": systemRole
        },
        {
          "role": "user",
          "content": prompt
        }
      ],
      "temperature": TEMPERATUE,
      "max_tokens": MAX_TOKENS
    })
  };

  // API実行
  const response = UrlFetchApp.fetch(GPT_API_URL, requestOptions);
  const statusCode = response.getResponseCode();

  // 回答結果確認
  let answer;
  if (statusCode === 200) {
    // HTTPステータスが200の場合は成功としてレスポンスを処理する
    const body = JSON.parse(response.getContentText());
    answer = body["choices"][0]["message"]["content"];
    console.log("prompt: " + prompt + "\r\nanswer: " + answer);
  } else {
    // HTTPステータスが200以外の場合はエラーとして処理する
    answer = 'APIの呼び出しに失敗しました。ステータスコード:' + statusCode;
  }

  return answer;
}

このCHATGPT関数は、引数としてプロンプト(質問)を受け取り、ChatGPTのAPIを使用してそのプロンプトに基づいて生成された回答を返します。

入力後、Ctrl+Sまたは「プロジェクトを保存」で保存してください。

スクリプトプロパティにOpenAIのAPI Key設定

この関数を使用するには、OpenAIのAPIキーが必要です。このキーを安全に保管するために、スクリプトプロパティに保存することができます。以下の手順で、スクリプトプロパティにOpenAIのAPIキーを設定することができます。

Apps Scriptの歯車のマーク(プロジェクトの設定)をクリックします。

プロジェクトの設定ページの一番下までスクロールします。「スクリプト プロパティを追加」をクリックします。

「プロパティ」に「OPENAI_API_KEY」、値にOpenAIのAPIキー(sk-から始まる英数字)を入力します。入力後、「スクリプト プロパティを保存」をクリックします。

これで、スクリプト内で「OPENAI_API_KEY」という名前でAPIキーを参照することができます。このキーは、APIキーを直接コードに埋め込むよりも安全です。また、複数のスクリプトで同じAPIキーを使用する場合に便利です。

実行の承認と動作確認

初回実行する際に、権限承認をする必要があるため、一度動作確認も兼ねてスクリプトを実行します。

Apps Scriptの画面に戻り、実行する関数「CHATGPT」を選択し、実行します。

「承認が必要です」と言われるので、「権限を確認」をクリックします。

Googleアカウントで認証します。

詳細をクリックします。

「Spreadsheet名(安全ではないページ)に移動」をクリックします。

「許可」をクリックします。

以下のように実行結果が出力されれば、正しく実行できています。回答内容は毎回変わります。

ツールの基本的な使い方

セルから作成したCHATGPT関数を呼び出します。引数にはChatGPTへの質問を記載します。

質問例
=CHATGPT("ChatGPTでは何ができますか")

その後、数十秒「Loading…」が表示されますが、ChatGPTから回答が返ってくると回答内容が表示されます。

回答例
おおっ、あんちゃん、ChatGPTにようこそやで!ChatGPTでは、以下のようなことができるで!

- チャットボットとの会話を楽しむことができるで!
- 質問や悩み事を相談することができるで!
- 言語や文法の練習をすることができるで!
- 様々なトピックについて話し合うことができるで!
- おもしろいジョークやクイズを楽しむことができるで!

なんでも聞いてくれや!ワイがお手伝いするで!"

ツールの高度な使い方

ChatGPTの人格を設定する

GASのソースコード内のSYSTEM_ROLEにChatGPTの人格を記載することで、回答内容を変えることができます。このソースコードでは、関西弁を話す陽気なおじさんを設定しています。

const SYSTEM_ROLE = `
あなたは関西弁の陽気なおじさんとしてロールプレイを行います。常に関西弁で話してください。
* あなたの一人称は「ワイ」です。
* ユーザを示す二人称は「あんちゃん」です。
`;

興味のある方はSYSTEM_ROLEを自分の好きなキャラ設定に書き換えてみてください。

ツール使用上の注意点

OpenAI APIの利用料金

OpenAIのAPIは無料期間をすぎると有料になります。1000トークン(≒文字)あたり0.002ドルなので、個人で利用する分には数百円程度だと思われますが、高額請求されないようご注意ください。

Google Spreadsheetを開いた際にCHATGPT関数が毎回呼び出される

Google Spreadsheetを開いた際にCHATGPT関数が毎回呼び出されるため、その際に毎回APIが呼び出されるので、API利用料がかかります。

実行に時間がかかると#ERROR!が表示される

30秒以上実行時間がかかった場合にセルに#ERROR!と表示され、以下のようなエラー内容が表示されます。

Exceeded maximum execution time(行 0)

これはGoogleの仕様で、カスタム関数は最大30秒までに制限されているためです。

Google サービスの割り当て  |  Apps Script  |  Google for Developers

エラーが頻繁に出るようであれば、関数で呼び出すのではなく、スクリプトとして呼び出すようにすることで最大6分間まで実行できるようになります。

前回までの質問は覚えていない

ChatGPTを公式のWebサイトから利用する際には、過去の質問と回答内容をある程度覚えており、文脈に沿った回答をしてくれますが、今回作ったツールは、過去の質問内容と回答内容は覚えさせていないので、毎回新規質問をしている状態になります。

スクリプトを改造することで、前回までの内容を覚えている状態で質問をすることもできるので、やりたいかたはチャレンジしてみてください。

免責事項

本記事に記載された情報は、筆者が調査した情報をもとに作成されています。記事の内容およびスクリプトについては、正確性を保証するものではありません。また、本記事やスクリプトを利用することによって生じたいかなる損害についても、筆者は一切の責任を負いかねます。スクリプトのご使用は自己責任でお願いします。

タイトルとURLをコピーしました