【GAS】GoogleスプレッドシートでChatGPTを使う

※本サイトにはプロモーション・広告が含まれています。

(最終更新月:2023年4月)

Google Apps Script(GAS)を使って、Googleスプレッドシートに入力した質問をChatGPTAPIに投げて、その回答を受け取る仕組みを開発。

その概要からコードまで、すべて公開しています。

筆者プロフィール

筆者プロフィールアイコン

【現職】プロジェクトマネージャー/SE(元外資系金融機関営業)

【副業】ブログ(月間15万PV)/YouTube/Web・アプリ制作

コミュニケーション × ビジネススキル × 文章力 × プログラミングスキルを活かし、30後半からのIT系職へシフト。当サイトでは、実際に手を動かせるWebアプリの開発を通じて、プログラミングはもちろん、IT職に必要な情報を提供していきます。

【当ブログで紹介しているサイト】

当サイトチュートリアルで作成したデモ版日報アプリ

Django × Reactで開発したツール系Webアプリ

✔人に見せても恥ずかしくないコードを書こう

「リーダブルコード」は、わかりやすく良いコードの定義を教えてくれる本です。

  • 見るからにきれいなコードの書き方
  • コードの分割方法
  • 変数や関数の命名規則

エンジニアのスタンダートとすべき基準を一から解説しています。

何回も読むのに値する本なので、ぜひ手にとって読んでみてください。

GASを活用したGoogleスプレッドシートとChatGPTの連携方法

こちらの仕組みでは、スプレッドシートとChatGPTAPIの間をGASで処理しています。

ひとつずつやるべきことを解説していきます。

詳しく動画でも解説していますので、こちらのコードを見ながらご覧ください。

OpenAIのシークレットキーを取得する

OpenAIへサインアップ・ログインし、APIキーを取得します。

openai ログイン

キーをコピーしたうえで、次へ進みましょう。

GoogleスプレッドシートとGASのスクリプトを紐付ける

Googleスプレッドシートを用意して、GASのスクリプトと紐付けるには以下のようにおこないます。

これにより、スプレッドシートと紐付いたGoogle Apps Scriptのプロジェクトが自動生成されます。

GASの設定と実コード

GASでおこなうことは以下の2つ。

  1. キーをスクリプトプロパティに登録
  2. コードを書く
  3. GASに権限を付与する

キーをスクリプトプロパティに登録

Scriptプロパティとは、プロジェクト内で使える環境変数。

プロジェクトの設定からスクリプトプロパティを編集してください。

コードを書く

エディタで記載するコードは以下のとおりです。

//スクリプトプロパティ
const apiKey = ScriptProperties.getProperty('GPT_KEY');
//リクエストを投げるエンドポイント
const ep = "https://api.openai.com/v1/chat/completions";
//モデル
const model = "gpt-3.5-turbo";

//実行する関数
function main() {
  //スプレッドシートからロール・質問を取り出す
  const spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = spreadsheet.getSheetByName('base');
  const role = sheet.getRange(1,2).getValue();//シートをからロールを取り出す(B1)
  const q = sheet.getRange(2,2).getValue();//シートから質問を取り出す(B2)

  //ChatGPTへの質問を作成
  const messages = [
            {
              "role": "system", "content": role
            },
            {"role": "user", "content": q}
          ]

  //requestペイロード
  const payload = {
      "model": model,
      "messages":messages,
      "max_tokens":3000
    }

  //request本体
  const options = {
        "method": "post",
        "headers": {
          "Content-Type": "application/json",
          'Authorization': 'Bearer ' + apiKey,
          },
        "payload": JSON.stringify(payload)
  }

  //requestの実行
  try {
    var response = UrlFetchApp.fetch(ep, options);
    Logger.log(response)
    var json = response.getContentText();
    var data = JSON.parse(json);
    sheet.getRange(6,2).setValue(data["choices"][0]["message"]["content"]);
  } catch(e) {
    // 例外エラー処理
    Logger.log('Error:')
    Logger.log(e)
  }
}

GASに権限を付与する

試しに実行してみると以下のような権限許可の画面がでてきます。

問題ないかを確認し、ScriptのGoogleスプレッドシートや外部APIサービス利用について、許可をしなければなりません。

続行を押して次へ進む

詳細をクリック

「プロジェクト名(安全ではないページ)に移動」をクリック

許可をクリック

まとめ:スプレッドシートからChatGPTを使うのは簡単

Google Apps Scriptを使うと、Googleサービスに対して、さまざまな処理が可能になります。

ぜひいろいろと活用して、作業効率向上を目指しましょう。

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