ChatGPTをスプレッドシートで使えるテンプレートを無料公開!

2023年3月21日

ChatGPTのAPIが使えるようになって、色々なサービスやアプリが開発されています。

ChatGPTを実行したいアプリケーションの1つがGoogleスプレッドシートです。

スプレッドシートからChatGPTに質問や投稿して応答結果が取得できればとても便利になります。

そこで、スプレッドシートからChatGPTのAPIにリクエストするテンプレートを作成しましたので、使い方やカスタマイズ方法を紹介します。

ChatGPTのAPIでサービス連携可能に

2023年3月2日にOpenAIがChatGPTのAPIを発表しました。

APIは「Application Programming Interface」の頭文字を取ったものです。

従来はChatGPTはブラウザ経由でしか利用できませんでしたが、色々なアプリやサービスからChatGPTが利用できるようになります。

すでにチャットツールのSlackでChatGPTのボットを作ったり、メールの返信案を考えたり、LINE公式アカウント、ブログの見出し案生成ツールに活用されています。

AutoWorkerでも早速ChatGPTのAPIを活用したLINE bot「モテチャットGPT」を個人開発しました。

このようにChatGPTのAPIが登場したことで、ブラウザからだけでなく、色々なプラットフォームでChatGPTが利用可能となりました。

ChatGPTを使うニーズが強いスプレッドシート

ブラウザ以外からChatGPTを使いたいツールとして、ニーズが強いのがスプレッドシートです。

スプレッドシートは元々200万セルが上限だったが、2019年に500万セルに拡張し、2022年3月に1000万セルにさらに拡張

スプレッドシートは多くの人々が仕事において活用しています。

そうした日常的に業務利用しているスプレッドシートからChatGPTを利用できればとても便利です。

スプレッドシートの特定セルに入力した質問や相談にChatGPTの回答結果がセルに格納されれば、業務利用が広がります。

スプレッドシートでChatGPTが使えるテンプレートを作成

そこで、スプレッドシートからChatGPTを利用できるテンプレートを作成してみました。

このChatGPT利用スプレッドシートのテンプレは誰でも使える形で公開しています。

Google Apps Scfript(GAS)でChatGPTのAPIをリクエストする形で、スプレッドシートでChatGPTが利用できるテンプレートを公開

【公開】スプレッドシートでChatGPTのAPI利用テンプレート(スプレッドシート)

ChatGPTをスプレッドシートで使いたいけど、どうやって導入すればよいか分からないという人でも簡単に使えます。

スプレッドシートのChatGPTテンプレート利用方法

作成したChatGPTをAPI経由でスプレッドシートから実行できるテンプレートの利用方法を解説します。

【公開】スプレッドシートでChatGPTのAPI利用テンプレート(スプレッドシート)

※下記のYoutube動画でもテンプレートの利用方法を解説しています。

閲覧権限のみのテンプレートをコピー

上記リンクからテンプレートにアクセスすると、スプレッドシートは閲覧権限となっており、閲覧のみと表示されています。

公開しているスプレッドシートでChatGPTが利用できるテンプレートはアクセスすると閲覧のみ可能な状態

このままではセル入力ができないため、ChatGPTテンプレートが利用できません。

そこで利用できるようにメニューバーにある「ファイル」から「コピーを作成」を選択します。

Google Apps Scfript(GAS)でスプレッドシートでChatGPTが利用できるテンプレートを使えるようにするため、メニューバー「ファイル>コピーを作成」を選択

コピーを作成したChatGPTテンプレートはオーナーが変更されて編集できるようになります。

※上記ChatGPTのスプレッドシートに編集権限をリクエストいただくことがありますが、編集権限の付与はできないため、コピーを作成いただくようお願い致します。

Google Apps Scfript(GAS)でスプレッドシートでChatGPTが利用できるテンプレートをコピーして編集可能に

ChatGPTのAPIキーを設定

ChatGPTをスプレッドシートで利用するために、テンプレートにはChatGPTのAPIキーを入力する必要があります。

OpenAIのAPI管理画面からAPIキーを発行して、B1セルの黒塗りの部分にAPIキーをセットします。

※ChatGPTのAPIキー取得方法は、下記の記事に従って取得してください。

初回ChatGPTへリクエスト時に承認作業

ChatGPTを使えるスプレッドシートのテンプレートは、初回実行時に承認作業が必要です。

B2セルにChatGPTに投稿したい文章を入力したら、「ChatGPTリクエスト」ボタンをクリックします。

ChatGPTが使えるスプレッドシートのテンプレートは初回実行時に認証許可が必要

「続行」ボタンを押すと、アカウント選択画面が表示されるので、ご自身のGoogleアカウントを選択してください。

GAS初回実行時の承認作業手順

「このアプリはGoogleで確認されていません」と表示されるので、左にある「詳細」リンクをクリックし、「スプレッドシートからChatGPTリクエスト(安全でないページ)に移動」をクリックします。

※安全なページに戻るボタンではありません。

最後にテンプレートが要求する操作が表示されるので、スクロールして「許可」ボタンを押して初回承認が完了です。

これでB列の6行目以降にChatGPTからの応答結果と投稿文が記録されていきます。

システムロールでChatGPTへの指示も可能

通常の投稿の他にもChatGPTのAPIで利用できるシステムロールの指示も可能です。

ChatGPTのAPIで利用できるシステムロールの指示もスプレッドシートテンプレートでは設定可能

システムロールでの指示とは、ユーザー投稿とは別にChatGPTに指示できるものです。

ChatGPTからの応答結果をコントロールしたい場合に設定します。

文脈に沿ったChatGPTからの回答も

さらに、ChatGPTの強みである文脈に沿った応答もスプレッドシートのテンプレートでは可能です。

ChatGPTのAPIに過去のやり取りを含めてリクエストすることで、文脈に沿った応答が返ってきます。

B4セルをOFFからONにすると、過去投稿履歴も含んでChatGPTのAPIにリクエストしてくれます。

スプレッドシートでChatGPTが使えるテンプレートでは、過去投稿を含める設定を有効にすると文脈に沿った応答が可能

ただ、過去投稿が増えるほどにAPIの使用量が増えて料金もかかるので使いすぎには注意です。

履歴の数が多くなった場合は「履歴削除」ボタンで履歴を削除してください。

スプレッドシート付属のGASコード確認方法

今回紹介したスプレッドシートのChatGPT利用テンプレートは、Google Apps Script(GAS)でコードを書いています。

このスプレッドシートでChatGPT利用できるプログラムの確認方法を解説します。

公開したスプレッドシートのテンプレートファイルをコピーすると、メニューバー「拡張機能>Apps Script」が選択できます。

ChatGPTが使えるスプレッドシートのテンプレートは裏側でGoogle Apps Scfript(GAS)のプログラムが動いている

すると、APIを使ってChatGPTにリクエストするGoogle Apps Script(GAS)と呼ばれるコードが表示されます。

ChatGPTのAPIをスプレッドシートで利用するためのGoogle Apps Scfript(GAS)のコード
function requestChatgpt() {
  //スクリプトに紐づいたスプレッドシートを読み込む
  const ss = SpreadsheetApp.getActiveSheet();
  //スプレッドシートのB1セルに入力したOpenAIのAPIキーを取得
  const apiKey = ss.getRange(1,2).getValue();
  //ChatGPTのAPIのエンドポイントを設定
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  //スプレッドシートのユーザーが入力した情報を取得
  const input = ss.getRange(2,2,3).getValues();
  //過去投稿の履歴数をスプレッドシートから取得
  const talkCount = ss.getRange(5,1).getValue();
  //履歴回数が1以上ある時に過去のやり取りを取得
  let talkData;
  if(talkCount >0){
    talkData = ss.getRange(6,1,talkCount,2).getValues();
  }
  let messages = [];
  //過去の投稿もChatGPTへのリクエストに含める場合
  if(input[2][0] === 'ON'){
    //userとassistantの2つのロールで交互に投稿をセット
    for(let i=0;i<talkCount;i++){
      if(i%2==0){
        messages.push({'role': 'user', 'content': talkData[i][1]});
      }else{
        messages.push({'role': 'assistant', 'content': talkData[i][1]});
      }
    }
  }
  //システム命令がある場合はmessagesにセット
  if(input[1][0] !== ''){
    messages.push({'role': 'system', 'content': input[1][0]});
  }
  //入力された投稿文をセット
  messages.push({'role': 'user', 'content': input[0][0]});
  //OpenAIのAPIリクエストに必要なヘッダー情報を設定
  const headers = {
    'Authorization':'Bearer '+ apiKey,
    'Content-type': 'application/json',
    'X-Slack-No-Retry': 1
  };
  //ChatGPTモデルやトークン上限、プロンプトをオプションに設定
  const options = {
    'muteHttpExceptions' : true,
    'headers': headers, 
    'method': 'POST',
    'payload': JSON.stringify({
      'model': 'gpt-3.5-turbo',
      'max_tokens' : 1024,
      'temperature' : 0.9,
      'messages': messages})
  };
  //OpenAIのChatGPTにAPIリクエストを送り、結果を変数に格納
  const response = JSON.parse(UrlFetchApp.fetch(apiUrl, options).getContentText());
  if(talkCount >0){
    talkData.push(
      ['ユーザー', input[0][0]],
      ['ChatGPT', response.choices[0].message.content]
    );
  }else{
    talkData = [
      ['ユーザー', input[0][0]],
      ['ChatGPT', response.choices[0].message.content]
    ];
  }
  //過去の投稿履歴に実行結果をスプレッドシートに追加
  ss.getRange(6,1, talkData.length,talkData[0].length).setValues(talkData);
}

function deleteChatHistory(){
  //スクリプトに紐づいたスプレッドシートを読み込む
  const ss = SpreadsheetApp.getActiveSheet();
  //過去の投稿履歴データを削除
  ss.getRange(6,1,ss.getLastRow(),2).clearContent();  
}

こちらのコードが「ChatGPTリクエスト」や「履歴削除」のボタンを押した時の処理です。

ChatGPTに投稿文を送って応答結果を出力するrequestChatgpt関数がChatGPTリクエストボタンを押した際に実行されます。

さらに履歴削除ボタンを押すと実行されるのがdeleteChatHistory関数です。

ChatGPTスプレッドシートのテンプレートは改良OK

GASのコードを書き換えることで、より使いやすいテンプレートにカスタマイズできます。

GASを扱ったことがない人はわかりにくいかもしれませんが、一から勉強するよりも、すでにあるコードを改良するほうが簡単です。

ChatGPTのAPIに送る投稿内容を別セルに変更することができます。

さらに、ChatGPTではなくGPT-4にリクエストしたい場合はAPIのmodel設定をgpt-3.5-turboからgpt-4に変更すれば可能です。

今後もChatGPTを色々と活用するためにテンプレートを改良してみてください。

まとめ・終わりに

今回、ChatGPTをスプレッドシートから簡単に使えるテンプレートを紹介しました。

ChatGPTのAPIが公開されたことで、色々な形でChatGPTを利用できるようになりました。

表計算のスプレッドシートからChatGPTが利用できると、業務にChatGPTを取り入れることができます。

そこで、スプレッドシートからChatGPTを使えるテンプレートを無料で公開しました。

ChatGPTのAPIの利用登録して、APIキーを発行すれば利用可能です。

ソースコードも参照できるので、テンプレートをベースにカスタマイズするのもOKです。

スプレッドシートでChatGPTを使いたい方は無料で使えるので、ぜひ解説手順にしたがってご活用ください。