「Google Apps ScriptでChatGPTを使って業務を自動化したいけど、具体的にどう連携すればいいの?」
正直なところ、私も最初はGASとChatGPTの連携って聞いても「難しそう…」と思ってました。VBAは少し触ったことがあったんですが、API連携なんて未知の世界だったんです。
でも実際にやってみると、意外とシンプルで、しかも業務効率が劇的に改善されることがわかりました。今では月に20時間以上の作業時間を短縮できています。
この記事では、GASとChatGPTを連携させる具体的な方法と、すぐに使える実践的なレシピを紹介します。コピペで動くコード例も用意したので、プログラミング初心者の方でも安心して取り組めますよ。
GASとChatGPT連携の基本準備
まずは連携に必要な準備から始めましょう。ぶっちゃけ、ここが一番面倒だったりするんですが、一度設定してしまえばずっと使えます。
OpenAI APIキーの取得
ChatGPTを使うには、OpenAIのAPIキーが必要です。私も最初「有料なの?」と心配でしたが、初回は無料クレジットがもらえるので、お試しで使ってみることができます。
- OpenAIの公式サイト(platform.openai.com)にアクセス
- アカウントを作成してログイン
- 「API Keys」からNew secret keyを作成
- 生成されたキーをコピー(この時だけしか表示されないので注意!)
実際にやってみると、3分もかからずに取得できました。ただし、APIキーは絶対に他人に見せないよう注意してくださいね。
Google Apps Scriptプロジェクトの作成
次にGASプロジェクトを作成します。これもスプレッドシートから簡単にできます。
- Googleスプレッドシートを開く
- 「拡張機能」→「Apps Script」をクリック
- 新しいプロジェクトが作成される
- プロジェクトに分かりやすい名前を付ける

最初はコードエディタの画面を見て「うわっ、難しそう…」と思いましたが、実際に使ってみるとそんなに複雑じゃなかったです。
基本的な連携コードの作成
それでは実際に連携するためのベースコードを作ってみましょう。これはすべてのレシピで使い回せる基本形です。
ChatGPT API呼び出し関数
まず、ChatGPTにリクエストを送る基本関数を作ります:
function callChatGPT(prompt, model = “gpt-3.5-turbo”) {
const apiKey = “あなたのAPIキー”; // ここにAPIキーを入力
const url = “https://api.openai.com/v1/chat/completions”;
const payload = {
model: model,
messages: [{
role: “user”,
content: prompt
}],
max_tokens: 1000,
temperature: 0.7
};
const options = {
method: “POST”,
headers: {
“Authorization”: “Bearer ” + apiKey,
“Content-Type”: “application/json”
},
payload: JSON.stringify(payload)
};
try {
const response = UrlFetchApp.fetch(url, options);
const data = JSON.parse(response.getContentText());
return data.choices[0].message.content;
} catch (error) {
console.error(“API呼び出しエラー:”, error);
return “エラーが発生しました”;
}
}
正直最初は「これで本当に動くの?」と半信半疑でしたが、実際に実行してみると普通に動いて感動しました。
実践レシピ集
ここからが本題です。実際に業務で使える具体的なレシピを紹介していきます。どれも私が実際に使って効果を実感したものばかりです。
レシピ1:メール文章の自動生成
最初は定型的なメール文章の生成から始めてみました。お客様への返信メールなど、毎回似たような内容を書くのって時間がかかりますよね。
function generateEmail() {
const sheet = SpreadsheetApp.getActiveSheet();
const customerName = sheet.getRange(“B2”).getValue();
const inquiryType = sheet.getRange(“B3”).getValue();
const prompt = `以下の条件でお客様への返信メールを作成してください:
・お客様名:${customerName}様
・お問い合わせ内容:${inquiryType}
・丁寧で親しみやすい文体
・200文字程度`;
const emailText = callChatGPT(prompt);
sheet.getRange(“B5”).setValue(emailText);
}
これを使い始めて、メール作成時間が1通あたり5分から1分に短縮されました。しかも文章の品質も一定で、お客様からの評判も良いんです。
レシピ2:データ分析レポートの自動作成
売上データなどを入力すると、自動でレポートを作成してくれる仕組みも作りました。これは本当に重宝しています。
function createSalesReport() {
const sheet = SpreadsheetApp.getActiveSheet();
const salesData = sheet.getRange(“A2:C10”).getValues();
// データを文字列に整形
let dataText = “売上データ:\n”;
salesData.forEach(row => {
if(row[0] !== “”) {
dataText += `商品:${row[0]}, 売上:${row[1]}円, 前月比:${row[2]}%\n`;
}
});
const prompt = `以下の売上データを分析し、要点をまとめたレポートを作成してください:
${dataText}
・傾向分析
・改善提案
・次月の見通し
を含めて300文字程度で`;
const report = callChatGPT(prompt);
sheet.getRange(“E2”).setValue(report);
}
実際にやってみると、人間が作るのと遜色ないレポートが自動で作られます。最初の1ヶ月は半信半疑でしたが、今では毎週の定例会議で使っています。
レシピ3:タスク管理と優先度設定
ToDoリストの優先度付けも自動化できます。これは個人的に一番気に入っているレシピです。
function prioritizeTasks() {
const sheet = SpreadsheetApp.getActiveSheet();
const tasks = sheet.getRange(“A2:B20”).getValues();
let taskList = “”;
tasks.forEach((task, index) => {
if(task[0] !== “”) {
taskList += `${index + 1}. ${task[0]} (期限: ${task[1]})\n`;
}
});
const prompt = `以下のタスクを緊急度と重要度で優先順位を付けて並び替えてください:
${taskList}
優先度の理由も簡潔に付けてください。`;
const prioritizedTasks = callChatGPT(prompt);
sheet.getRange(“D2”).setValue(prioritizedTasks);
}
これを使うようになってから、「今日は何から手を付けよう…」と悩む時間が大幅に減りました。AIが客観的に判断してくれるので、結構当たってるんですよね。
トラブルシューティングと注意点
実際に使っていて遭遇したトラブルと、その解決方法も共有しておきますね。
よくあるエラーとその対処法
最初の3日間で私が遭遇したエラーは主に以下の3つでした:
- APIキーが無効 – 正しくコピーできていない場合が多い
- トークン数超過 – max_tokensの値を調整する
- レスポンス遅延 – Utilities.sleep()で待機時間を設ける
正直なところ、最初は「なんでエラーが出るんだ…」とイライラしましたが、原因がわかってからは同じミスをしなくなりました。
セキュリティ対策
APIキーの管理は重要です。コードに直接書くのではなく、スクリプトプロパティを使いましょう:
// 設定時(一度だけ実行)
function setApiKey() {
const apiKey = “your_api_key_here”;
PropertiesService.getScriptProperties().setProperty(‘OPENAI_API_KEY’, apiKey);
}
// 使用時
function getApiKey() {
return PropertiesService.getScriptProperties().getProperty(‘OPENAI_API_KEY’);
}
これで少なくともコード上にAPIキーが直接表示されることはありません。
応用とカスタマイズのコツ
基本のレシピに慣れてきたら、自分の業務に合わせてカスタマイズしてみてください。
プロンプトエンジニアリングのポイント
良い結果を得るためのプロンプト作りのコツを紹介します:
- 具体的に指示する – 「良い感じに」ではなく「200文字で丁寧に」
- 出力形式を指定 – 「箇条書きで」「表形式で」など
- 例を示す – 「〜のような感じで」と具体例を入れる
- 制約を明記 – 「専門用語は使わずに」など
最初はプロンプトの書き方がよくわからなくて、思うような結果が得られませんでした。でも試行錯誤していくうちに、コツが掴めるようになります。

プロンプトって最初は「なんか呪文みたい…」と思ってたんですが、慣れてくると「あ、こう言えば伝わるな」というのがわかってきます。人とのコミュニケーションと似てるかもしれません。
定期実行の設定
毎日決まった時間に実行したいタスクは、トリガーを設定しましょう:
- Apps Scriptエディタで「トリガー」をクリック
- 「トリガーを追加」を選択
- 実行する関数と実行タイミングを設定
- 保存
私は毎朝8時に売上レポートが自動で作成されるよう設定しています。朝一でデータを確認できるので、1日のスタートがスムーズになりました。
コスト管理と効率化
APIを使うと料金が発生するので、コスト管理も重要です。
料金を抑えるコツ
- GPT-3.5-turboを活用 – GPT-4より安価で十分な場合が多い
- max_tokensを適切に設定 – 必要以上に長い回答を避ける
- キャッシュ機能を実装 – 同じ質問の結果を保存して再利用
- バッチ処理を活用 – 複数のタスクをまとめて実行
実際に私が使っている月の料金は大体5ドル程度です。これで20時間以上の時間短縮ができているので、時給換算すると十分ペイできています。
まとめ
GASとChatGPTの連携は、最初は少し難しく感じるかもしれませんが、一度設定してしまえば業務効率が大幅に改善されます。
今回紹介したレシピから、まずは1つ選んで試してみてください。私のおすすめは「メール文章の自動生成」です。効果を実感しやすく、失敗しても大きな問題にはならないからです。
重要なポイントをおさらいすると:
- APIキーの管理は慎重に
- 小さく始めて徐々に拡張
- プロンプトの書き方が結果を左右する
- エラーが出ても慌てない
あなたもGASとChatGPTを連携させて、日々の業務を効率化してみませんか?最初は小さな一歩からで大丈夫です。きっと想像以上の効果を実感できるはずですよ。