0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

GASでChatGPT APIを使う方法【コピペで動くコード付き】

0
Posted at

はじめに

「ChatGPTを業務に組み込みたいけど、どこから始めればいいか分からない」

そんな方向けに、Google Apps Script(GAS)からChatGPT APIを呼び出す方法を解説します。GASはGoogleアカウントさえあれば無料で使えるので、サーバー不要・環境構築不要で今日から試せます。

この記事を読めば、スプレッドシートやGmailとChatGPTを連携させる仕組みを自分で作れるようになります。

完成イメージ

この記事では以下の3つを作ります。

  1. 基本:GASからChatGPTに質問して回答を取得する
  2. 実用例①:スプレッドシートのセルにAI回答を自動入力する
  3. 実用例②:メールの下書きをChatGPTに自動生成させる

事前準備

OpenAI APIキーの取得

  1. platform.openai.com にアクセスしてアカウント作成
  2. 右上のアカウントメニュー → 「API keys」
  3. 「Create new secret key」でAPIキーを生成
  4. 生成されたキー(sk-...)をメモしておく(再表示されないので注意)

注意: APIの利用は従量課金です。GPT-4o miniなら1,000トークンあたり約$0.00015と非常に安価ですが、本番運用前に利用制限を設定しておくことをおすすめします。


① 基本:GASからChatGPTを呼び出す

コード

// ─── 設定 ───────────────────────────────────────
const OPENAI_API_KEY = 'sk-xxxxxxxxxxxxxxxxxxxxxxxx';  // ★ あなたのAPIキー
const MODEL = 'gpt-4o-mini';  // 安価で高速なモデル
// ────────────────────────────────────────────────

/**
 * ChatGPTにメッセージを送り、回答を返す
 * @param {string} userMessage - ユーザーからのメッセージ
 * @param {string} systemPrompt - AIへの役割・指示(省略可)
 * @returns {string} AIの回答
 */
function chatWithGPT(userMessage, systemPrompt = 'あなたは親切なアシスタントです。') {
  const url = 'https://api.openai.com/v1/chat/completions';

  const payload = {
    model: MODEL,
    messages: [
      { role: 'system',  content: systemPrompt },
      { role: 'user',    content: userMessage  },
    ],
    max_tokens: 1000,
    temperature: 0.7,
  };

  const options = {
    method: 'POST',
    headers: {
      'Content-Type':  'application/json',
      'Authorization': `Bearer ${OPENAI_API_KEY}`,
    },
    payload: JSON.stringify(payload),
    muteHttpExceptions: true,
  };

  const response = UrlFetchApp.fetch(url, options);
  const json = JSON.parse(response.getContentText());

  // エラーチェック
  if (json.error) {
    throw new Error(`OpenAI API Error: ${json.error.message}`);
  }

  return json.choices[0].message.content;
}

// 動作確認用(スクリプトエディタから実行してみてください)
function test() {
  const answer = chatWithGPT('GASとは何ですか?50文字以内で教えてください。');
  console.log(answer);
}

実行方法

  1. Apps Scriptのエディタにコードを貼り付ける
  2. OPENAI_API_KEY を自分のキーに変更
  3. test 関数を選択して実行
  4. 「ログ」に回答が表示されれば成功

② 実用例①:スプレッドシートにAI回答を自動入力する

A列に質問を入力すると、B列にChatGPTの回答が自動で入力される仕組みです。

/**
 * スプレッドシートのA列の質問に対してAI回答をB列に入力する
 */
function fillAnswersInSheet() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();

  for (let i = 2; i <= lastRow; i++) {  // 2行目から(1行目はヘッダー)
    const question = sheet.getRange(i, 1).getValue();  // A列:質問

    // 質問が空、またはすでに回答済みならスキップ
    if (!question || sheet.getRange(i, 2).getValue()) continue;

    try {
      const answer = chatWithGPT(question);
      sheet.getRange(i, 2).setValue(answer);  // B列に回答を入力
      Utilities.sleep(1000);  // API制限対策で1秒待つ
    } catch (e) {
      sheet.getRange(i, 2).setValue(`エラー: ${e.message}`);
    }
  }
}

使い方

A列(質問) B列(AIが自動入力)
GASとは何ですか? (自動で回答が入ります)
Pythonの特徴を3つ教えてください (自動で回答が入ります)

③ 実用例②:メールの下書きをChatGPTに自動生成させる

件名と要点を渡すと、ビジネスメールの本文を自動生成してGmailの下書きに保存します。

/**
 * ChatGPTでビジネスメールを生成してGmailの下書きに保存する
 * @param {string} subject   - メールの件名
 * @param {string} keyPoints - メールに含めたい要点(箇条書きでOK)
 * @param {string} to        - 宛先(例:「株式会社〇〇 田中様」)
 */
function generateEmailDraft(subject, keyPoints, to) {
  const systemPrompt = `
あなたはビジネスメールの作成を支援するアシスタントです。
以下のルールに従ってメール本文を作成してください。
- 丁寧で自然なビジネス文体
- 件名と要点に沿った内容
- 挨拶・本文・締めの3部構成
- 署名は含めない
`.trim();

  const userMessage = `
件名:${subject}
宛先:${to}
要点:
${keyPoints}

上記をもとにメール本文を作成してください。
`.trim();

  const body = chatWithGPT(userMessage, systemPrompt);

  // Gmailの下書きとして保存
  GmailApp.createDraft(
    '',          // 宛先メールアドレス(任意)
    subject,
    body
  );

  console.log('下書きを保存しました:\n' + body);
}

// 実行例
function testEmailDraft() {
  generateEmailDraft(
    '先日のお打ち合わせのお礼',
    `・先日はお時間をいただきありがとうございます
・ご提案内容について社内で検討いたします
・来週中に改めてご連絡いたします`,
    '株式会社〇〇 田中様'
  );
}

APIキーの安全な管理方法

コードに直接APIキーを書くのは非推奨です。スクリプトプロパティを使って安全に管理しましょう。

// ── キーの保存方法 ──
// Apps Script エディタ →「プロジェクトの設定」→「スクリプトプロパティ」
// キー名:OPENAI_API_KEY、値:sk-xxx... を追加

// ── コードでの読み出し方 ──
const OPENAI_API_KEY = PropertiesService
  .getScriptProperties()
  .getProperty('OPENAI_API_KEY');

これでコードをGitHubなどに公開しても、APIキーが漏れません。


料金の目安

モデル 入力(1Mトークン) 出力(1Mトークン)
gpt-4o-mini $0.15 $0.60
gpt-4o $5.00 $15.00

日常的な業務利用(1日100リクエスト程度)なら、gpt-4o-miniで月数百円以下に収まることがほとんどです。


まとめ

GASとChatGPT APIを組み合わせると、Googleのサービスとのシームレスな連携が簡単に実現できます。

  • ✅ サーバー不要・環境構築不要
  • ✅ スプレッドシートやGmailとすぐに連携できる
  • ✅ コストも低く抑えられる

今回紹介した chatWithGPT() 関数は汎用的に使えるので、様々な業務フローに組み込んでみてください。


AI活用の業務自動化・システム開発のご相談

「自社の業務にAIを組み込みたい」「GASでの開発を外注したい」などのご相談はお気軽にどうぞ。

🌐 https://datarou.com

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?