技術ブログ

GASでChatGPT APIを使いこなす!基本連携と活用例

/ 初心者向け

GASでChatGPT APIを使いこなす!基本連携と活用例

Google Apps Script (GAS) と ChatGPT API の連携:自動化の可能性を広げよう

Google Apps Script (GAS) は、Google Workspace の各種サービスを自動化・連携させるための強力なツールです。そして、近年目覚ましい進化を遂げているのが OpenAI の ChatGPT です。この二つを組み合わせることで、これまで想像もできなかったような自動化や効率化が可能になります。

本記事では、GAS から ChatGPT API を呼び出し、その応答を Google スプレッドシートなどに活用するための基本的な連携方法を、初心者の方にも分かりやすく解説します。

1. ChatGPT API を利用するための準備

GAS から ChatGPT API を利用するには、いくつかの準備が必要です。

1.1 OpenAI アカウントの作成と API キーの取得

まず、OpenAI のウェブサイトでアカウントを作成します。アカウント作成後、API キーのページにアクセスし、新しいAPI キーを生成します。この API キーは、あなたのアプリケーションが OpenAI のサービスにアクセスするための「鍵」となりますので、絶対に他人に知られないように厳重に管理してください。

1.2 GAS プロジェクトの作成

GAS を利用するには、Google スプレッドシート、ドキュメント、またはスタンドアロンのスクリプトエディタから新しいプロジェクトを作成します。今回は、スプレッドシートと連携させることを想定して進めます。

2. GAS から ChatGPT API を呼び出す基本コード

API キーの準備ができたら、いよいよ GAS から API を呼び出すコードを記述します。ここでは、最も基本的な「テキスト生成」の例を見てみましょう。

function callChatGPT() {
  // ここに取得したAPIキーを設定します
  const apiKey = 'YOUR_OPENAI_API_KEY';
  const apiUrl = 'https://api.openai.com/v1/chat/completions';
  const model = 'gpt-3.5-turbo'; // または 'gpt-4' など

  const prompt = 'AIの未来について、3行で説明してください。';

  const response = UrlFetchApp.fetch(apiUrl, {
    method: 'post',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'Bearer ' + apiKey
    },
    payload: JSON.stringify({
      model: model,
      messages: [
        { role: 'system', content: 'You are a helpful assistant.' },
        { role: 'user', content: prompt }
      ]
    })
  });

  const responseData = JSON.parse(response.getContentText());
  Logger.log(responseData.choices[0].message.content);
}

コードの解説:

  • YOUR_OPENAI_API_KEY の部分は、あなたが取得した実際のAPIキーに置き換えてください。
  • UrlFetchApp.fetch() は、GAS で外部のURLにHTTPリクエストを送信するための関数です。
  • method: 'post' でPOSTリクエストを指定します。
  • headers には、Content-Type と Authorization ヘッダーを含めます。Authorization ヘッダーには、APIキーを Bearer YOUR_OPENAI_API_KEY の形式で渡します。
  • payload は、APIに送信するデータ本体です。JSON.stringify() でJavaScriptオブジェクトをJSON文字列に変換しています。
  • messages 配列には、AIとの対話履歴を渡します。role: 'system' はAIの役割を設定し、role: 'user' はユーザーからの質問や指示です。
  • APIからの応答は responseData.choices[0].message.content に含まれています。Logger.log() でログに出力しています。

3. 実行と結果の確認

GAS エディタの実行ボタンをクリックし、callChatGPT 関数を実行します。初回実行時には、APIキーへのアクセス許可を求められる場合がありますので、許可してください。

実行後、GAS エディタの「実行ログ」またはスプレッドシートの Logger.log() で出力される内容を確認すると、ChatGPTからの応答が表示されているはずです。

4. 応用例:スプレッドシートとの連携

この基本コードを応用すれば、様々な自動化が可能になります。例えば、スプレッドシートの特定のセルに入力されたテキストを元に、ChatGPTに質問を投げかけ、その回答を別のセルに書き出すことができます。

4.1 メール文面の自動生成

以下は、スプレッドシートのA列に顧客名、B列に用件を入力しておき、C列にメール本文を自動生成する例です。

function generateEmailBody() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const lastRow = sheet.getLastRow();

  for (let i = 2; i <= lastRow; i++) { // 2行目から開始 (ヘッダーを除く)
    const customerName = sheet.getRange(i, 1).getValue();
    const matter = sheet.getRange(i, 2).getValue();

    if (customerName && matter) { // 名前と用件が入力されている場合のみ実行
      const prompt = `${customerName} 様へ、${matter} に関するメールの冒頭部分を作成してください。丁寧な言葉遣いでお願いします。`;

      const response = UrlFetchApp.fetch('https://api.openai.com/v1/chat/completions', {
        method: 'post',
        headers: {
          'Content-Type': 'application/json',
          'Authorization': 'Bearer YOUR_OPENAI_API_KEY'
        },
        payload: JSON.stringify({
          model: 'gpt-3.5-turbo',
          messages: [
            { role: 'system', content: 'You are a professional email writer.' },
            { role: 'user', content: prompt }
          ]
        })
      });

      const responseData = JSON.parse(response.getContentText());
      const emailBody = responseData.choices[0].message.content;
      sheet.getRange(i, 3).setValue(emailBody); // C列にメール本文を書き出す
    }
  }
}

このスクリプトを使えば、日々の定型的なメール作成業務を大幅に効率化できるでしょう。

まとめ

GAS と ChatGPT API を連携させることで、テキスト生成、文章校正、アイデア出し、データ分析の補助など、様々なタスクを自動化できます。API キーの管理と、API の利用料金には注意が必要ですが、その可能性は計り知れません。

ぜひ、ご自身の業務に合わせた活用方法を模索し、GAS と ChatGPT API の力で、よりスマートな働き方を実現してください。

GAS自動化の導入相談

請求書PDF作成、Gmail自動送信、Slack通知、スプレッドシート連携などを業務に合わせて実装できます。

請求書自動生成ツールを見る / SNS自動投稿ツールを見る