ChatGPTでスプレッドシートの問い合わせを自動で仕分けする方法

ChatGPTでスプレッドシートの問い合わせを自動で仕分けする方法

記事
IT・テクノロジー
問い合わせやアンケートの回答を1件ずつ読んで仕分けるのは、件数が増えるほど大変です。ChatGPTの画面に1件ずつコピペしている方も多いと思いますが、それでは追いつかなくなります。
GAS(Google Apps Script)からChatGPT(OpenAIのAPI)を呼び出すと、スプレッドシートの各行を自動で仕分けできます。

準備するもの

・OpenAIのAPIキー:ChatGPTの有料プランとは別の契約で、使った分だけ支払う仕組みです
・「問い合わせ」シート:A列に問い合わせの内容を入れ、B列は空けておきます(ここに分類が入ります)
APIキーはコードに直接書かず、Apps Scriptの「プロジェクトの設定」→「スクリプト プロパティ」に、OPENAI_API_KEY という名前で保存します。コードを人に見せたときに、キーが漏れるのを防げます。

コード

MODEL と ENDPOINT の2か所は、OpenAIの公式ドキュメントを見て書き換えてください。ENDPOINT には Chat Completions のページに載っているURLを、MODEL には使いたいモデルの名前を入れます。
const MODEL = 'ここに使うモデルの名前';
const ENDPOINT = 'ここにAPIのURL';

function classify() {
  const key = PropertiesService.getScriptProperties().getProperty('OPENAI_API_KEY');
  const sheet = SpreadsheetApp.getActive().getSheetByName('問い合わせ');
  const last = sheet.getLastRow();
  if (last < 2) return;

  const rows = sheet.getRange(2, 1, last - 1, 2).getValues();
  rows.forEach((r, i) => {
    if (!r[0] || r[1]) return; // 空欄と、分類済みは飛ばす
    const res = UrlFetchApp.fetch(ENDPOINT, {
      method: 'post',
      contentType: 'application/json',
      headers: { Authorization: 'Bearer ' + key },
      payload: JSON.stringify({
        model: MODEL,
        messages: [
          { role: 'system', content: '次の問い合わせを「質問」「要望」「クレーム」「その他」のどれか1語だけで答えてください。' },
          { role: 'user', content: String(r[0]) }
        ]
      })
    });
    const label = JSON.parse(res.getContentText()).choices[0].message.content.trim();
    sheet.getRange(i + 2, 2).setValue(label);
  });
}

使うときの注意

・AIの答えは、いつも正しいとは限りません。お客さまへの返信など大事な判断には、人の確認を入れてください
・個人情報や社外秘の内容をAIに送る場合は、社内のルールを確かめてください
・1回の実行には6分の上限があります。件数が多いときは、1回に処理する件数を決めて、何回かに分けて実行します
・料金は、処理する件数と使うモデルによって変わります

応用

指示文(system の部分)を変えるだけで、要約、返信文の下書き、商品説明のたたき台づくりなどにも使えます。
自分の業務に合わせて作り込みたい場合は、ご依頼でもお受けしています。Geminiでも作れます。
▶ ChatGPTでシートの分類・要約を自動化します
サービス数100万件のスキルマーケット、あなたにぴったりのサービスを探す