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キーの取得

STEP
OpenAIのサイトにアクセス

OpenAIプラットフォームにアクセスします。

既にアカウントがある場合は、「Log In」をクリックしてログインします。

アカウントをまだ持っていない場合は、画面右上の「Sign Up」をクリックして新規登録を行います。

STEP
Dashboard を開く

ログイン後、OpenAIの管理画面に移動します。

画面右上の「Dashboard」を開きます。

STEP
API keys を開く

画面左側の「API keys」を開きます。

STEP
Create new secret key を開く

画面中央の「Create new secret key」 を開きます

STEP
APIキーの名前を入力

APIキーの名前を入力します。

英語・日本語どちらでもOKで、好きな名前を設定します。

その後、「Create secret key」 を押します。

STEP
APIキーをコピーして保存

作成されたAPIキーが表示されます。

このキーは一度しか表示されないため、コピーして安全な場所に保存します。

APIキーの管理
  • APIキーを紛失しても同じものを再取得できません。
    ですが、新しいキーを作成できます。
  • APIキーを共有したり公開しないように注意。
    誰かがそのAPIキーを不正に使用すると、コストがかかる場合があります。

利用制限と料金
OpenAIの料金ページで、利用量やコストについて確認できます。

これで、APIキーを取得し、利用できる準備が整います。

GASスクリプトの作成と実行

次に、Google Apps Script(GAS)を使ってスプレッドシートとChatGPTを連携させるためのスクリプトを作成します。

ここでは、ChatGPTのAPIキーをスクリプトプロパティに保存して利用する方法を紹介します。

スクリプトプロパティを使うことで、APIキーをコード内に直接書かず、セキュリティを保ちながらスクリプトを管理できます。

STEP
GASエディタを開く

Googleスプレッドシートを開き、メニューの「拡張機能」から「Apps Script」をクリックしてGASエディタを開きます。

STEP
スクリプトプロパティにAPIキーを保存する

エディタが開いたら、左側メニューから「プロジェクトの設定」をクリックします。

その後、「スクリプトプロパティを追加」を選択します。

プロパティフィールドにAPIキーを入力し、保存します。

  • プロパティ: 好きな名前 (例:OPENAI_API_KEY
  • : 取得したAPIキー(例:sk-xxxxxx

プロパティ名は日本語も入力できますが、一般的には英語やローマ字を使用します。

STEP
GASスクリプトの作成
今回のスクリプト内容

スプレッドシートの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に送信されるテキストです。
空のプロンプトをスキップ・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() を使って余分な空白を取り除き、すっきりしたテキストを表示します。
STEP
スクリプトを保存

コードを書いたら、名前をつけて保存します。

(例:「ChatGPT連携スクリプト」)

STEP
スクリプトを実行

スプレッドシートのA列にプロンプトを入力し、スクリプトを実行すると、B列にChatGPTの回答が表示されます。

STEP
必要な権限を許可

スクリプトを初めて実行するときは、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導入補助金の申請サポートも行っております。

貴方の業務改善を全力でサポートいたします。

お問い合わせはこちら

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次