スプレッドシートでデータ処理を手作業で続けていると、「もっと効率よくできないだろうか」と感じる場面が増えてきます。関数やフィルタでは対応しきれない作業、たとえば文章の分類・要約・翻訳といった「判断が必要な処理」は、これまで人の手に頼るしかありませんでした。
そこで注目されているのが、ChatGPT APIとGoogle Apps Script(GAS)を組み合わせた自動化です。この方法を使えば、スプレッドシート上で「AIが考えて回答する列」を作ることができ、何百行ものデータを一括で処理できるようになります。
この記事では、APIキーの取得からGASのコード設定、実際にスプレッドシートで使うところまで、ステップバイステップで解説していきます。プログラミング経験がない方でも、コピペだけで基本的な連携は完了しますので、安心して読み進めてください。

ChatGPT×スプレッドシートでできること
まず「どのような処理が自動化できるのか」を具体的に把握しておきましょう。従来の関数やマクロでは難しかった「文章を理解して判断する」タイプの処理が、ChatGPT連携によって可能になります。
| 活用例 | 入力(A列) | 出力(B列) |
|---|---|---|
| 顧客レビューの感情分析 | レビュー文 | ポジティブ/ネガティブ/中立 |
| 商品説明文の自動生成 | 商品名・特徴 | キャッチコピー |
| メール文の自動翻訳 | 日本語メール | 英語翻訳 |
| アンケート回答の分類 | 自由記述回答 | カテゴリ分類 |
| 議事録の要約 | 議事録テキスト | 3行要約 |
| SEOタイトル案の生成 | キーワード | タイトル案5つ |
A列にデータを入力し、B列にカスタム関数を入力するだけで、下までドラッグすれば全行を一括処理できます。手作業でコピペを繰り返していた工程が、関数一つで完了する形です。
事前準備:OpenAI APIキーの取得
ChatGPTのAPI利用にはAPIキーが必要です。以下の手順で取得してください。
- platform.openai.comにアクセスし、アカウントを作成(またはログイン)
- 画面左メニューの「API keys」をクリック
- 「Create new secret key」でAPIキーを発行
- 表示されたキーを必ずコピーして安全な場所に保存する(再表示はされません)
- 「Billing」から支払い方法を登録し、クレジットをチャージ
APIキーは一度しか表示されません。紛失した場合は新しいキーを発行する必要があります。また、キーを他人と共有したり、公開リポジトリにアップロードしたりしないよう十分注意してください。
API利用は従量課金制です。軽量なモデル(このコードで使うgpt-4o-miniなど)であれば、軽い処理のコストを抑えやすくなります。ただし、OpenAIのモデルは入れ替わりが早く、利用できるモデル名や料金は変わります。最新の料金とモデル一覧はOpenAI Pricing(openai.com)で確認してください。
ステップ1:GASエディタを開く
Google Apps Script(GAS)は、Googleスプレッドシートに標準搭載されているスクリプト環境です。追加インストールは不要で、ブラウザ上ですべての操作が完了します。
- Googleスプレッドシートを開く
- メニューの「拡張機能」→「Apps Script」をクリック
- GASエディタが新しいタブで開く
エディタが開いたら、デフォルトの「function myFunction()」のコードは削除して、次のステップで紹介するコードに置き換えます。
コピペだけでも動きますが、あとから自分で書き換えたくなったときにGASの基本を知っていると手が止まりません。Google Apps Scriptの入門書は、そのタイミングで手に取られることが多い1冊です。

ステップ2:ChatGPT連携のGASコードを書く
以下のコードをGASエディタにそのままコピペしてください。このコードによって、スプレッドシート上で=GPT(“質問文”)というカスタム関数が使えるようになります。
function callChatGPT(prompt) {
const apiKey = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
const url = 'https://api.openai.com/v1/chat/completions';
const payload = {
model: 'gpt-4o-mini',
messages: [
{ role: 'system', content: 'あなたは優秀なアシスタントです。簡潔に回答してください。' },
{ role: 'user', content: prompt }
],
max_tokens: 500,
temperature: 0.7
};
const options = {
method: 'post',
contentType: 'application/json',
headers: { 'Authorization': 'Bearer ' + apiKey },
payload: JSON.stringify(payload),
muteHttpExceptions: true
};
const response = UrlFetchApp.fetch(url, options);
const json = JSON.parse(response.getContentText());
return json.choices[0].message.content.trim();
}
function GPT(prompt) {
return callChatGPT(prompt);
}
コードの構造はシンプルで、callChatGPT関数がAPIへのリクエストを処理し、GPT関数がスプレッドシートから呼び出されるカスタム関数として機能します。
systemメッセージの内容を変更すれば、AIの振る舞いを自由にカスタマイズできます。「あなたはSEOの専門家です」「あなたは英日翻訳のプロです」など、用途に合わせて書き換えてみてください。
ステップ3:APIキーをスクリプトプロパティに設定
APIキーをコードに直接書くのはセキュリティ上NGです。必ずスクリプトプロパティに保存しましょう。
- GASエディタの左サイドメニューで「プロジェクトの設定」(歯車アイコン)をクリック
- 下部の「スクリプト プロパティ」で「プロパティを追加」をクリック
- プロパティ名:OPENAI_API_KEY、値:取得したAPIキーを入力
- 保存をクリック
この方法であれば、コードやスプレッドシートにキーが直接表示されることはありません。共有スプレッドシートで利用する場合は、GASの編集権限にも注意しておきましょう。
ステップ4:スプレッドシートで使ってみる
設定が完了したら、スプレッドシートに戻ってセルに関数を入力するだけです。
=GPT("東京タワーの高さは?")→ AIが回答を返す=GPT("以下のレビューをポジティブかネガティブか判定して: "&A2)→ A2のテキストを判定=GPT("以下の文章を50文字で要約して: "&A2)→ A2のテキストを要約
A列にデータを入力し、B列にGPT関数を入れれば、下までドラッグするだけで全行を一括処理できます。初回の実行時にはGASの承認ダイアログが表示されますが、画面の指示に従って許可すれば問題ありません。
この工程はGASエディタとスプレッドシートを何度も行き来するため、画面が1枚だと切り替えだけで消耗します。横に広いウルトラワイドモニターは、コードと表を並べて置きたい人に選ばれています。

ステップ5:大量処理の注意点と対策
API呼び出しの制限に注意
スプレッドシートの関数は一斉に実行されるため、大量のセルにGPT関数を入れるとAPIのレート制限に引っかかることがあります。以下の対策を検討してください。
- バッチ処理:GASのトリガー機能を使って、一定間隔で数行ずつ処理する
- Utilities.sleep():リクエスト間に待機時間を入れる(例:1秒間隔)
- 結果をキャッシュ:一度取得した結果をセルに値貼り付けして、再計算を防ぐ
コスト管理のポイント
高性能なモデルは、大量処理ではコストがかさむことがあります。簡単な分類や翻訳であれば軽量なモデル(gpt-4o-miniなど)を使うとコストを抑えやすくなります。コード内のモデル名を変更するだけで切り替えられます。利用できるモデル名はOpenAIの公式ドキュメントで確認してください。
処理内容に応じてモデルを使い分ける方法があります。分類・翻訳は軽量モデル、高度な分析・文章生成は上位モデルというように分けると、コストを調整しやすくなります。
GASの実行時間制限
GASにはスクリプトの実行時間に制限があります(無料のGoogleアカウントは6分、Google Workspaceは30分)。大量のデータを処理する場合は、処理を分割してトリガーで順次実行する仕組みを作る必要があります。100行程度であれば制限に達しにくいですが、数百行以上の処理を予定している場合は事前に考慮しておきましょう。
実行時間の制限を避けるには処理を分割するほか、自分で用意した常時稼働のサーバーで自動化を動かす選択肢もあります。ABLENET VPSは、公式サイトでAIセルフホスト向けのLinux VPSとして案内されており、n8nなどをセットアップツールで導入できます。10日間の無料試用があると公式に書かれています。設定や運用は自己管理になる点も含め、詳しくは公式サイトで確認できます。

ChatGPTでExcel関数を自動生成する方法については、以下の記事で解説しています。



実践テクニック3選
テクニック1:システムプロンプトを変更して専門特化する
コード内のsystemメッセージを変更するだけで、AIの振る舞いを変えられます。用途に合わせて複数のカスタム関数を作れば、さらに便利に活用できます。
- 「あなたはSEOの専門家です。SEOの観点から回答してください。」
- 「あなたは英日翻訳の達人です。自然な日本語に翻訳してください。」
- 「あなたは感情分析の専門家です。ポジティブ/ネガティブ/中立で判定してください。」
テクニック2:出力フォーマットを指定する
「JSON形式で出力して」「カンマ区切りで3つ出力して」と指定すると、スプレッドシートでの後処理がスムーズになります。たとえば、カンマ区切りで出力してもらえば、SPLIT関数で複数セルに分割することも可能です。
このあたりまで来ると、AI側の出力よりもシート側の関数の引き出しが仕上がりを左右してきます。スプレッドシートの関数解説書は、QUERYやARRAYFORMULAまで含めて整理し直したい人に選ばれています。
テクニック3:トリガーで定期自動実行する
GASのトリガー機能を使えば、「毎朝9時に新しいデータを自動処理」といった完全自動化も実現できます。設定方法は以下のとおりです。
- GASエディタの左メニュー「トリガー」(時計アイコン)をクリック
- 「トリガーを追加」で対象の関数を選択
- 実行頻度(毎日、毎時など)を設定して保存


ChatGPTでデータ分析する方法については、以下の記事で解説しています。



よくある質問(FAQ)
Q1. プログラミング経験がなくてもできますか?
上記のコードをコピペするだけで基本的な連携は完了します。カスタマイズする場合はJavaScriptの基礎知識があると便利ですが、必須ではありません。
Q2. Excelでも同じことができますか?
ExcelではVBA + OpenAI APIで同様の連携が可能です。ただし、GASの方がクラウドベースで設定が簡単なので、まずはスプレッドシートで試してみることをおすすめします。
Q3. APIの料金はどれくらいかかりますか?
料金はモデルごとに異なり、入力・出力のトークン量に応じた従量課金です。たとえばgpt-4o-miniは100万トークンあたり入力$0.15・出力$0.60の掲載例があります(モデルの入れ替わりや改定があるため、最新の料金はOpenAI公式の料金ページで確認してください)。処理するデータ量とプロンプトの長さによって、実際のコストは変わります。
Q4. APIキーのセキュリティは大丈夫ですか?
スクリプトプロパティに保存すれば、コードやスプレッドシートにキーが直接表示されないので安全です。共有スプレッドシートではGASの編集権限にも注意してください。
Q5. GPT関数がエラーになる場合はどうすればよいですか?
よくある原因は「APIキーが間違っている」「残高が不足している」「レート制限に達している」の3つです。GASの実行ログ(メニューの「実行」→「実行ログ」)でエラー内容を確認すると、原因を特定しやすくなります。
Q6. ChatGPT以外のAI(Claudeなど)でも同じことはできますか?
API提供しているAIであれば同様の連携が可能です。Claude APIやGemini APIでも、URLとペイロードの形式を変えるだけで動作します。Claude APIドキュメントも参考にしてみてください。
まとめ:スプレッドシート×ChatGPTで「AI関数」を手に入れよう
この記事の内容を振り返ります。
- GASとOpenAI APIでスプレッドシートにAI関数を追加できる
- 分類・要約・翻訳・文章生成など、従来の関数では難しかった処理ができるようになる
- コードはコピペで基本の連携が可能。プログラミング経験がなくても始められる
- コスト管理には軽量モデルの活用とバッチ処理の組み合わせが有効
- トリガー機能を使えば完全自動化も実現できる
スプレッドシートとChatGPTの組み合わせは、業務効率化に役立つ手段です。セットアップに必要な時間は環境によって異なりますが、まずは小さなデータで試してみてください。ChatGPTはChatGPT公式ページ(openai.com)から、Google Workspace AIの詳細はGoogle Workspace AI公式ページから確認できます。


