【GAS x ChatGPT】API連携で業務効率を劇的に改善!
/ 初心者向け
【GAS x ChatGPT】API連携で業務効率を劇的に改善!
皆さん、こんにちは!GAS専門ブロガーの〇〇です。
今回は、今話題のChatGPT APIとGoogle Apps Script (GAS) を連携させて、日々の業務を効率化する画期的な方法をご紹介します。
「ChatGPTってすごいのは知ってるけど、どうやってGASで使えるの?」「API連携って難しそう…」
そんな風に思っている方も大丈夫!この記事を読めば、誰でも簡単にChatGPT APIをGASから呼び出し、様々な業務に応用できるようになります。
なぜChatGPT APIとGASを連携させるのか?
GASはGoogle Workspace(Gmail, スプレッドシート, ドキュメントなど)を自動化するのに非常に強力なツールです。そこに、ChatGPTの高度な自然言語処理能力を組み合わせることで、以下のようなことが可能になります。
- 文章生成の自動化: メール文面、報告書、SNS投稿文などの作成を自動化。
- データ分析・要約: スプレッドシートのデータからインサイトを抽出し、要約を作成。
- 質疑応答ボット: 社内FAQや顧客からの問い合わせに自動で回答。
- 翻訳: 多言語でのコミュニケーションを円滑に。
これらの作業をGASで自動化することで、これまで手作業に費やしていた時間を大幅に削減し、より創造的で価値の高い業務に集中できるようになります。
事前準備:ChatGPT APIキーの取得
まず、ChatGPT APIを利用するにはAPIキーが必要です。以下の手順で取得してください。
1. OpenAIのウェブサイトにアクセス: https://openai.com/
2. アカウントを作成またはログイン:
3. APIキーのページへ移動: 右上のプロフィールアイコンから「View API keys」を選択。
4. 新しいシークレットキーの作成: 「+ Create new secret key」ボタンをクリック。
5. キーのコピーと保管: 発行されたAPIキーは一度しか表示されないため、安全な場所にコピーして保管してください。絶対に公開しないように注意しましょう!
GASからChatGPT APIを呼び出す方法
GASからChatGPT APIを呼び出すには、UrlFetchApp サービスを使用します。HTTPリクエストを送信し、APIからの応答を受け取る形になります。
例:簡単なテキスト生成スクリプト
ここでは、GASからChatGPTに「〇〇について教えて」という指示を送り、その回答を取得する簡単なスクリプトを例に説明します。
function callChatGPT() {
// 取得したAPIキーを設定します。実際のキーに置き換えてください。
const apiKey = 'YOUR_OPENAI_API_KEY';
// ChatGPT APIのエンドポイントURL
const apiUrl = 'https://api.openai.com/v1/chat/completions';
// APIに送信するデータ(プロンプトやモデル設定など)
const requestBody = {
model: 'gpt-3.5-turbo', // 使用するモデルを指定
messages: [
{ role: 'system', content: 'あなたは優秀なアシスタントです。' }, // システムメッセージ
{ role: 'user', content: 'Google Apps Script (GAS) とは何か、簡単に説明してください。' } // ユーザーからの質問
],
max_tokens: 150, // 生成する最大トークン数
temperature: 0.7 // 生成のランダム性 (0.0~2.0)
};
// HTTPリクエストのヘッダー
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + apiKey
};
// オプション設定
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(requestBody),
headers: headers,
muteHttpExceptions: true // エラー発生時にも例外を投げないようにする
};
try {
// APIにリクエストを送信
const response = UrlFetchApp.fetch(apiUrl, options);
const responseCode = response.getResponseCode();
const responseBody = response.getContentText();
if (responseCode === 200) {
// 成功した場合
const jsonResponse = JSON.parse(responseBody);
const generatedText = jsonResponse.choices[0].message.content;
Logger.log('ChatGPTからの回答: ' + generatedText);
return generatedText;
} else {
// エラーが発生した場合
Logger.log('エラーが発生しました。ステータスコード: ' + responseCode);
Logger.log('レスポンスボディ: ' + responseBody);
return 'API呼び出し中にエラーが発生しました。';
}
} catch (e) {
Logger.log('例外が発生しました: ' + e.toString());
return 'API呼び出し中に予期せぬエラーが発生しました。';
}
}
コードの解説:
apiKey: 取得したChatGPT APIキーを設定します。ご自身のキーに必ず置き換えてください。apiUrl: ChatGPT APIのチャット補完エンドポイントを指定します。requestBody: APIに送信するリクエストの本体です。model: 使用するChatGPTのモデルを指定します。gpt-3.5-turboはコストパフォーマンスに優れており、多くの用途で利用できます。messages: 対話の履歴を配列で渡します。roleで話者の役割(systemはAIの振る舞いを指示、userはユーザーからの入力)を指定し、contentで実際のメッセージ内容を記述します。max_tokens: 生成されるテキストの最大長を制限します。temperature: 生成されるテキストのランダム性を調整します。値が高いほど多様な表現になります。headers: リクエストヘッダーを設定します。AuthorizationヘッダーにAPIキーをBearerトークンとして含めます。options:UrlFetchApp.fetchメソッドに渡すオプションです。method: 'post': POSTメソッドを使用します。payload: リクエストボディをJSON形式の文字列に変換して設定します。muteHttpExceptions: true: APIエラー時にGASが例外を投げずに、エラーコードとレスポンスを取得できるようにします。
この callChatGPT() 関数を実行すると、LoggerにChatGPTからの回答が表示されます。この回答をスプレッドシートに書き込んだり、メールで送信したりと、さらに応用することができます。
応用例:スプレッドシートからのメール文面生成
例えば、スプレッドシートに顧客リストがあり、それぞれにパーソナライズされたメールを送りたい場合を考えましょう。
1. スプレッドシートの準備: 顧客名、メールアドレス、簡単な依頼内容などを列に持つスプレッドシートを作成します。
2. GASスクリプトの作成: スプレッドシートの各行を読み込み、ChatGPT APIを使ってメール本文を生成し、MailApp.sendEmail() で送信するスクリプトを作成します。
function sendPersonalizedEmails() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const dataRange = sheet.getDataRange();
const values = dataRange.getValues();
// ヘッダー行をスキップ
for (let i = 1; i < values.length; i++) {
const row = values[i];
const customerName = row[0]; // 顧客名 (A列)
const emailAddress = row[1]; // メールアドレス (B列)
const request = row[2]; // 依頼内容 (C列)
if (customerName && emailAddress && request) {
// ChatGPTにメール本文生成を依頼
const emailBody = generateEmailBody(customerName, request);
// メール送信
MailApp.sendEmail({
to: emailAddress,
subject: '【重要】ご依頼について',
body: emailBody
});
Logger.log(customerName + '様へメールを送信しました。');
}
}
}
function generateEmailBody(name, request) {
const apiKey = 'YOUR_OPENAI_API_KEY'; // ご自身のAPIキーに置き換えてください
const apiUrl = 'https://api.openai.com/v1/chat/completions';
const prompt = `${name}様、いつもお世話になっております。
${request}について、進捗状況をご共有いただけますでしょうか。
お忙しいところ恐縮ですが、ご返信いただけますと幸いです。
よろしくお願いいたします。`;
const requestBody = {
model: 'gpt-3.5-turbo',
messages: [
{ role: 'system', content: 'あなたは丁寧なビジネスメールを作成するアシスタントです。' },
{ role: 'user', content: prompt }
],
max_tokens: 300,
temperature: 0.7
};
const headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + apiKey
};
const options = {
method: 'post',
contentType: 'application/json',
payload: JSON.stringify(requestBody),
headers: headers,
muteHttpExceptions: true
};
try {
const response = UrlFetchApp.fetch(apiUrl, options);
const responseCode = response.getResponseCode();
const responseBody = response.getContentText();
if (responseCode === 200) {
const jsonResponse = JSON.parse(responseBody);
return jsonResponse.choices[0].message.content;
} else {
Logger.log('メール本文生成エラー。ステータスコード: ' + responseCode);
return '(メール本文生成に失敗しました)';
}
} catch (e) {
Logger.log('メール本文生成例外: ' + e.toString());
return '(メール本文生成中に予期せぬエラーが発生しました)';
}
}
このスクリプトでは、generateEmailBody 関数がChatGPT APIを呼び出してメール本文を生成し、sendPersonalizedEmails 関数がその生成された本文を使ってメールを送信します。これにより、顧客一人ひとりに合わせたメールを大量に、かつ自動で送信できるようになります。
まとめ
ChatGPT APIとGASを連携させることで、これまで想像もできなかったような業務自動化が可能になります。
- APIキーの取得方法
UrlFetchAppを使ったAPI呼び出しの基本- 具体的なコード例
これらを理解すれば、皆さんのGASスキルの幅が大きく広がり、日々の業務効率を劇的に改善できるはずです。
ぜひ、今回ご紹介した内容を参考に、ご自身の業務に合ったChatGPT API連携を試してみてください!
次回もお楽しみに!
---
GAS自動化の導入相談
請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。