この記事では、ChatGPTとスプレッドシートを連携する方法を解説します。
まずは以下の動画をご覧ください。
この動画では、スプレッドシートを使って「YouTubeで新商品を販促するための企画案」を検討しています。
ChatGPTとスプレッドシートを連携したところ、たった3分で5つの企画案を作ることができました。
この記事では「GPT for Google Sheets and Docs」というアドオンを使って、この魔法のようなスプレッドシートを作る方法を詳しく解説します。
ChatGPTとスプレッドシートを連携するには?
ChatGPTとスプレッドシートを連携するには、
の2つのツールが必要です。
アドオンはスプレッドシートで使える拡張機能のことです。「GPT for Google Sheets and Docs」というアドオンを使うと、スプレッドシートからChatGPTを使うことができます。
また、OpenAIのAPIは「ChatGPTに相当するAI機能」をスプレッドシートなどの外部のシステムから使えるように、OpenAIが提供している仕組みです。
これらのツールを組み合わせることによって、ChatGPTとスプレッドシートの連携が実現できます。
※ChatGPTとOpenAIのAPIは厳密には別物ですが、この記事ではわかりやすさのためOpenAIのAPIで提供される対話型AIモデルをChatGPTと呼ぶことにします。
ChatGPTとスプレッドシートを連携する3つのステップ
ChatGPTとスプレッドシートを連携するには、以下の3つのステップがあります。
- OpenAIのAPIを設定する
- 「GPT for Google Sheets and Docs」をインストールする
- ChatGPTをスプレッドシートから呼び出す
それぞれ詳しく解説します。
1. OpenAIのAPIの設定
はじめにOpenAIのAPIの設定をします。
1.1. OpenAIのアカウントを作成する
APIを使うためにOpenAIのアカウントを作成します。
以下のサイトにアクセスしましょう。
画面右上にある「Sign up」をクリックしてください。
「Create your account」という画面が出てくるので、ここでアカウントを作成します。
メールアドレスを入力して「Continue」をクリックするか、GoogleやMicrosoft、Appleのアカウントを使って登録します。
1.2. APIキーを発行する
アカウントを作成したらOpenAIの「APIキー」を発行します。
APIキーは、OpenAIのAPIにアクセスするための認証情報です。
OpenAIのサーバーにアクセスするために必要になります。
以下のページにアクセスしましょう。
画面が開いたら「+ Create new secret key」のボタンをクリックします。
「Create new secret key」というダイアログが出てきます。
ここで認証情報に名前をつけます。
ここではNameに「ForGoogleSpreadSheet」と入力します。
入力したら緑色の「Create secret key」のボタンを押します。
すると、APIキーが発行されます。表示された長い文字列がAPIキーです。後で使います。
一度しか表示されないため、このタイミングで必ずコピーしてメモしましょう(メモするのを忘れて閉じてしまった場合は再度発行する必要があります)。
なお、コピーしたAPIキーが漏洩すると不正利用される危険性があるため他人には見られないように保管してください。
APIキーをメモできたら「Done」ボタンをクリックしてダイアログを閉じます。
これでAPIキーの発行は完了です。
2. 「GPT for Google Sheets and Docs」のインストール
次に「GPT for Google Sheets and Docs」のインストールと設定をします。
スプレッドシートを開きましょう。
2.1. アドオンのインストール
空のスプレッドシートを開き「拡張機能」→「アドオン」→「アドオンを取得」の順にクリックします。
次のようなダイアログが出てくるので、検索窓に「GPT for Google Sheets」と入力しましょう。
Enterキーを押すといくつかのアドオンが出てきますが「GPT for Google Sheets and Docs」を探してクリックします。
「インストール」をクリックします。
権限を求められるので「続行」をクリックします。
Googleのログイン画面が出てくるのでいつも通りにログインします。
次の画面で「許可」をクリックするとアドオンが使えるようになります。
これでアドオンのインストールは完了です。
2.2. アドオンにAPIキーを設定する
次に、アドオンにAPIキーを設定します。
APIキーを設定することで「GPT for Google Sheets and Docs」アドオンがAPIにアクセスできるようになります。
「拡張機能」→「GPT for Sheets and Docs」→「Set API key」の順にクリックします。
画面の右側に「Welcome to GPT for Sheets!」というパネルが出てきます。
このパネルの中央にある「Enter your OpenAI API Key」の入力フォームに、先ほど発行してメモしておいたAPIキーを入力して「Next」をクリックします。
パネルが切り替わればAPIキーの設定もOKです。
3. スプレッドシートからChatGPTを呼び出す
それでは、スプレッドシートからChatGPTを使ってみましょう。
アドオンの設定が正しくできていれば、ChatGPTを呼び出すのはとても簡単です。
セルの「A1」を選択し、次のように入力します。
=GPT(
GPT
という関数が使えるようになっているのがわかるかと思います。
GPT関数にプロンプトを入れると、ChatGPTからの回答を得ることができます。
たとえば、次のように入れてみてください。
=GPT("日本の首都は?")
このように入力してEnterキーを押すと、
セルが「Loading…」になり、
しばらくするとChatGPTの回答に置き換わります。
GPT関数の詳しい使い方
ここでGPT関数の使い方を補足しておきます。
GPT関数は次の構文になっています。
GPT([プロンプト], [プロンプトに連結するセル], [temperature], [最大トークン数], [モデル])
プロンプト
ChatGPTへのメッセージです。
「””」で囲んで直接テキストを書くか、テキストが書かれたセルを「A1」のような形式で入力します。
プロンプトに連結するセル
特定のセルをGPT関数の2番目の値に「A2」のようにセルの番地を入力すると、そのセルの中身をプロンプトに繋げてChatGPTに送ってくれます。
temperature
ChatGPTの回答の多様性を決める値です。
0〜1の数値で入力します。
初期設定は0です。迷ったときは「0」で問題ありません。
0に近いほど一貫性のある回答が得られ、1に近いほど多様性に富んだ回答が得られます。
しっかりとした回答がほしいときはtemperatureを0に近い値にするのがいいです。
反対に、意外性のあるアイデアがほしいときはtemperatureを1に近い値にするのがいいです。
最大トークン数
ChatGPTの質問・回答のトークン数を制限するための設定です。
わかりやすくいえば「回答の文字数を制限する」設定です。
トークンとは、文章を意味のとれる最小単位に分割したものです。
日本語の場合は「トークン数≒文字数」です。英語の場合は「トークン数≒単語数」です。
1回のAPIアクセスで使えるトークンの最大数は4000トークンになっています。
また、後ほど説明しますがChatGPTのAPIは使ったトークン数に対する従量課金制になっています。
モデル
OpenAIのAPIで利用できる対話型AI(言語モデル)にはいくつかの種類があります。
それぞれで性能が異なり、性能が高いものほど利用料金も高くなります。
一般的に使われるのは「gpt-3.5-turbo」というモデルで、これが初期設定です。
特にこだわりがなければ初期設定のままで問題ありません。
より高精度な回答を求める場合は「gpt-4」を指定できます。
ChatGPTのGPT-4に相当するモデルです。
4. OpenAIのAPIの料金
OpenAIのAPIを使うと料金がかかります。
心配かと思いますので、料金について少し解説します。
ChatGPTのAPIは「トークン数」に対する従量課金制です。
トークンとは「文章を意味のとれる最小単位に分割したもの」です。
日本語の場合は「トークン数≒文字数」と考えてもほとんど問題ないです。
トークン数はOpenAIの公式サイトで計算できます。
たとえば「あしたのてんきははれ」というテキスト(10文字)のトークン数は10です。
料金表には1000トークンあたりの価格が記載されています(料金は将来的に変わる可能性があるので注意してください)。
2023年7月10日時点ではGPT-3.5 Turboモデルは1000トークンあたり$0.0015(0.21円)です。
GPT-4モデルは1000トークンあたり$0.03(4.25円)です。
まとめると、
- GPT-3.5 Turboのモデルを使う場合「約1000文字ごとに0.21円」
- GPT-4モデルを使う場合「約1000文字ごとに4.25円」
がかかります。
APIの利用上限を設定する
APIの使いすぎや不正利用が心配な方は、以下のページで利用上限を設定しておくと高額な請求を回避できるので安心です。
制限には「Hard limit」と「Soft limit」があります。
- 「Hard limit」に設定した金額に達するとAPI利用を強制的に止めてくれます
- 「Soft Limit」に設定した金額に達するとメールで通知してくれます。
Hard limitに予算上限を設定しておけば、それ以上の金額を請求される心配はありません。
5. GPT for Google Sheets and Docsの使い方
「GPT for Google Sheets and Docs」の使い方をさらに詳しく見ていきましょう。
アドオンを追加するとChatGPTを使ったいろいろな関数が使えるようになります。
これらの関数を使ってChatGPTを呼び出してスプレッドシートを操作します。
GPT関数
もっともシンプルな関数はGPT関数です。
GPT関数にテキストを渡すとChatGPTの回答が得られます。
たとえば、以下のようにすると「A2」のセルに書いたテキストをChatGPTに問い合わせることができます。
=GPT(A2)
GPT関数(複数のセルをまとめて入力)
GPT関数には複数のセルを入力できます。
たとえば、次のようにすると「A6」から「B8」までの範囲のテキストを結合したうえでChatGPTに問い合わせる事ができます。
=GPT(A6:B8)
GPT_LIST関数
GPT_LIST関数を使うとリスト形式の回答を複数のセルに分割して入力できます。
=GPT_LIST(A3:B3)
回答がリスト形式になる場合にGPT_LIST関数が便利です。
GPT_HLIST関数
GPT_HLIST関数は、GPT_LIST関数と同じ機能ですが、回答を水平方向に出力してくれます。
=GPT_HLIST(A12)
回答をリスト形式で水平方向に出力したいときはGPT_LIST関数が便利です。
GPT_SPLIT関数
ChatGPTの回答を文章・段落・セクションなどのまとまりごとにセルに分割したいときがあります。
そんなときはGPT_SPLIT関数が便利です。
=GPT_SPLIT(テキスト, split_by)
GPT_SPLITを使うと、テキストをセクションや段落、文などの意味的な単位でセルに分割してくれます。
たとえば、このようにChatGPTの回答が書かれているセル(B2)があるとします。
GPT_SPLITを使って、これを文ごとに分割してみます。
GPT_SPLIT関数の「split_by」には「sections(セクション)」「paragraphs(段落)」「sentences(文)」など、分割したい単位を入れます。
Enterを押すと、このようにChatGPTの回答の文章をセルに分割してくれます。
GPT_HSPLIT関数
GPT_SPLIT関数では、分割した文章を縦方向に展開しました。
水平方向に分割したい場合はGPT_HSPLIT関数を使います。
使い方はGPT_SPLIT関数と同じです。
GPT_FILL関数
GPT_FILL関数を使うと、例文を使ってセルを自動入力してくれます。
たとえば、いくつかの商品のキャッチコピーを考えているとします。
あなたはキャッチコピーを2つ考えました。
これらのキャッチコピーを参考にして、残りの商品のキャッチコピーを作りたいです。
こんなときにGPT_FILL関数が使えます。
=GPT_FILL(例文のセル範囲, 入力のセル範囲)
このようにしてEnterを押すと残りの商品のキャッチコピーを考えてセルを埋めてくれます。
例文やサンプルがあって、それに合わせてセルを埋めてほしいときに使えます。
GPT_TABLE関数
GPT_TABLE関数は、回答を表形式でセルに出力する関数です。
ChatGPTの回答が表形式になる場合に便利です。
=GPT_TABLE(プロンプトを書いたセル)
GPT_MAP関数
GPT_MAP関数は、あるセル範囲の中からキーワードに対応するセルを探し出す関数です。
=GPT_MAP(キーワードのセル範囲, 対応する候補のセル範囲)
たとえば、米国IT企業のティッカーシンボル(企業名を略記したもの)と正式な企業名を対応づけたいとします。
「ティッカーシンボルのリスト」と「企業の正式名称のリスト」を使って、ティッカーシンボルとそれに対応する正式名称の対応付けをします。
ティッカーシンボルに対応する正式名称を抽出できました。
GPT_FORMAT関数
GPT_FORMAT関数は表記ゆれのある日付を1つのフォーマットにそろえる関数です。
=GPT_FORMAT(入力, フォーマット)
入力は日付が書かれたセルで、フォーマットはそろえたい日付の「形式」です。
フォーマットは、たとえば「日本の標準形式」という指示でも正しく直せます。
GPT_EDIT関数
GPT_EDIT関数は、テキストを編集する関数です。
=GPT_EDIT(入力テキスト, 編集内容)
たとえば「平仮名で書かれたテキストを漢字に直してください」のような指示に従ってテキストを編集してくれます。
GPT_TAG関数
GPT_TAG関数は、テキストにタグ付けをする関数です。
=GPT_TAG(テキスト, タグの候補)
タグ候補を渡すとその中からテキストの内容に近いタグを見つけてくれます。
タグの候補がなくてもタグ付けできます。ただし、タグは英語で生成されます。
=GPT_TAG(テキスト)
GPT_CLASSIFY関数
GPT_CLASSIFY関数はテキストをカテゴリに分類する関数です。
この関数はかなり便利です。
=GPT_CLASSYIFY(分類するテキスト, カテゴリ)
たとえば、サービスに対するレビュー文章を感情ごとに「ポジティブ」「中立」「ネガティブ」の3つにわけることができます。
正しくポジティブ判定できています。
同じように他のレビューも分類してみます。
カテゴリを絶対参照(F4キー)にしてから、
すべてのセルに対して実行します。
このようにGPT_CLASSIFY関数を使えば、たくさんのテキストをまとめて分類できます。
GPT_EXTRACT関数
GPT_EXTRACT関数はテキストから特定の要素を探して取り出す関数です。
たとえば、長いテキストからメールアドレスだけを取り出すことができます。
=GPT_EXTRACT(テキスト, 取り出したい要素)
GPT_SUMMARIZE関数
GPT_SUMMARIZE関数は、その名の通りテキストを要約する関数です。
=GPT_SUMMARIZE(長いテキスト)
ただし、そのままでは日本語の文章でも英語で翻訳されてしまいます。
次のように、テキストの後に要約の指示(「日本語で」)を入れると、指定した形式で翻訳してくれます。
=GPT_SUMMARIZE(長いテキスト, "日本語で")
ここでは「140字の日本語で」と形式を指定しました。
日本語で要約できています。
GPT_TRANSLATE関数
GPT_TRANSLATE関数は、テキストを翻訳する関数です。
=GPT_TRANSLATE(テキスト, 言語)
たとえば、英語の文章を日本語に翻訳するには以下のようにします。
=GPT_TRANSLATE(英語のテキスト, "日本語")
簡単に翻訳できました。
GPT_CONVERT関数
GPT_CONVERT関数はjsonやhtml, xmlなどの特定のフォーマットから別のフォーマットに変換する関数です。
たとえば、htmlをjsonに変換するには次のようにします。
=GPT_CONVERT(html形式のテキスト, 'json')
JSON形式に変換されます。
GPT_CODE関数
GPT_CODE関数は、実行したいタスクを実現するコードを生成するための関数です。
生成されるコードは関数形式です。
=GPT_CODE(実行したいタスク, プログラミング言語)
たとえば、Pythonでフィボナッチ数列を作るコードを生成するには次のようにします。
=GPT_CODE("フィボナッチ数列を生成する", "Python")
Pythonの関数が生成されます。
6. 【実践編】ChatGPTとスプレッドシートの連携
最後はいよいよ実践編です。
ChatGPTとスプレッドシートを使って、新しいサービスのアイデアを考えてみましょう。
ここではあなたが営業スキルに強みを持っているとします。
そのスキルを使ってどんなサービスが展開できるかをChatGPTとスプレッドシートを使って考えてみましょう。
まずは以下のようにChatGPTへの指示を書きます。
ここでは「営業スキルを活かせる新規サービス」を問うプロンプトにしました。
次に、ChatGPTが考えたサービスを垂直方向に列挙してもらいます。
「概要」という見出しを作り、その下のセルで「=GPT_LIST(B1)」を実行します。
すると以下のように新規サービス案が列挙されます。
次に、これらのサービスの特徴を詳しく書かせます。
「概要」の右横のセルに「特徴」という見出しを作り、その下のセルで「=GPT(“次のサービスの特徴は?”, “A4”)」という関数を実行します。
こうすることで、左横のセル(つまりサービス概要)を踏まえてそのサービスの特徴を書いてくれます。
セルの右下にある青い点を下向きにドラッグし、他のセルもまとめて実行します。
すべてのサービスの特徴が列挙されました。
次に、それぞれのサービスの「ターゲット(顧客)」を書かせてみましょう。
ターゲットは文章で生成されるとわかりにくいので、カンマ区切りで列挙させます。
「特徴」の右横のセルに「ターゲット」という見出しを作り、その下のセルに「=GPT(“以下のサービスのターゲットとなりうる顧客は誰?カンマ区切りで20文字以内”, A4)」と書きます。
これを実行すると、
ターゲットが列挙されました。
セルの右下の青い点をドラッグして他のサービスのターゲットも列挙させます。
あとは同じように「そのサービスを必要とする顧客はどんな課題を抱えているか?」「サービスで課題を解決できたらどうなるか?」など、新しい列を作ってChatGPTに投げていきます。
すべてのセルを実行すると新規サービスの企画案をまとめたスプレッドシートができあがります。
このくらいのスプレッドシートなら数分で完成します。
質問によっては、回答の精度は十分ではないかもしれませんが企画のアイデア出しとしては十分です。
もっと回答の精度を上げたいときは「gpt-4」のモデルを使うといいです。
たとえば、GPT関数でgpt-4のモデルを使うには、次のようにしてモデルを指定できます。
=GPT(テキスト, , , , 'gpt-4')
7. エラーと解決策
よくあるエラーとその解決策を書いておきます。
Exceeded maximum execution time(行 0)が発生しました。
このエラーはChatGPTのAPIが30秒以内に回答できなかった場合に、時間制限によって発生するエラーです。
対処法としては、プロンプトに「30秒以内に回答して」とか「OO文字以内で回答して」と書く方法があります。これによって回答内容が短くなるため、30秒以内に回答できる可能性が高まります。
また、GPT-4モデルを使っている場合は特に回答に時間がかかるため、このエラーの発生頻度を下げたい場合はGPT-3.5 Turboモデルに切り替えるのもひとつの手です。
まとめ
この記事では、ChatGPTとスプレッドシートを連携する方法を詳しく解説しました。
GPT for Google Sheets and Docsというアドオンを使うことで簡単に連携ができましたね。
今回はアドオンの使い方を中心に解説しましたが、ChatGPTに入力するプロンプトの作り方次第では、もっと効果的に使えるようになるので、色々試してみてください。
プロンプトの作り方やChatGPTとスプレッドシートの連携をもっとうまく活用する方法を今後も紹介する予定です。
記事の内容にわからないことがある方は以下のアカウントに気軽にDMしてください!
また、最新の技術の活用方法など役に立つツイートを心がけているので、ぜひフォローしてもらえると嬉しいです!
参考
- GPT for Sheets reference https://gptforwork.com/gpt-for-sheets/reference
- OpenAI https://openai.com/