業務自動化で脱・手作業!一人事務のDX活用術 | RPA・自動化ツール

業務自動化で脱・手作業!一人事務のDX活用ブログ|RPA・自動化ツールで業務をもっとラクに、もっとスマートに

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

アンケートを集計していると、ありがたいご意見だけでなく、ときには厳しい声や否定的なレビューを目にすることもありますよね。

企業や店舗にとって、こうしたご意見をいち早く受け止め、真摯に対応することは、信頼向上とリピーター獲得につながる大切なプロセスです。

しかし、数多く寄せられる回答の中から、ネガティブなものだけを即時に判別して対応するのは、手作業ではなかなか大変です。

そこで今回は、Googleフォーム×ChatGPT API×Google Apps Script(GAS)を使って、アンケートの「ご意見」欄をAIが感情分析し、ネガティブな内容のみを即時メールで通知するシステムを構築する方法をご紹介します。


AIでアンケートを感情分析する仕組みとは?

このシステムの流れはとてもシンプルです。

  1. ユーザーがGoogleフォームで評価(★1〜5)とご意見を記入

  2. Googleスプレッドシートに内容が自動記録される

  3. GASでChatGPT APIを呼び出し、感情を分析(ポジティブ/中立/ネガティブに分類)

  4. 分析結果をスプレッドシートに記録

  5. ネガティブなご意見だけ、担当者に即時通知メール

  6. ユーザーには分類に応じた自動返信メールを送信

たったこれだけで、感情の可視化と迅速なフォロー対応が同時に実現します。


Googleフォームの作成

まずはアンケート用のGoogleフォームを作成しましょう。

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

  • 質問項目例:

    • 製品・サービスの評価(★1〜5段階)

    • ご意見・ご感想

    • お名前(任意)

    • メールアドレス(自動返信用)

回答はスプレッドシートと連携させておくことで、GASで自動処理が可能になります。


必要な準備:ChatGPT APIキーの取得

まずは、OpenAIからChatGPT APIキーを取得しておきましょう。

keiridx.net

▼GASの事前準備が必要な方はこちら

keiridx.net

GASでChatGPTと連携するスクリプト

Google Apps Script(GAS)でコードを記入:

---------------------------------------------------------
const OPENAI_API_KEY = 'sk-*******************'; // 自分のAPIキーに差し替えてください
const STAFF_EMAIL = '**************@gmail.com'; // ネガティブ通知先メール

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

  for (let row = 2; row <= lastRow; row++) {
    const rating = sheet.getRange(row, 2).getValue(); // B列
    const comment = sheet.getRange(row, 3).getValue(); // C列
    const currentResult = sheet.getRange(row, 5).getValue(); // E列:すでに記録済みか?
    const email = sheet.getRange(row, 4).getValue(); //

    // スキップ条件:空欄 or すでに評価済み or 評価数値が空欄
    if (!comment || currentResult || !rating) continue;

    const prompt = `
以下の製品評価とご意見に基づき、総合的な印象を「ポジティブ」「ネガティブ」「中立」のいずれかで評価してください。
数値評価が高くても、ご意見の内容が否定的であればネガティブと判断してください。

特に重要なのは、評価の数値とコメントの内容が一致しているかどうかです。
数値評価が1~2のように低い場合、コメントが好意的に見えても評価者が何かに不満を抱えている可能性が高いと考え、ネガティブと判定してください。
逆に、評価が高くコメントが明確に肯定的であればポジティブ、中立的な表現が多い場合は中立としてください。

【評価】${rating}
【ご意見】${comment}

最後に、なぜその分類にしたかを簡単に説明してください。
`;

    const analysis = getChatGptReply(prompt);

    const resultMatch = analysis.match(/(ポジティブ|ネガティブ|中立)/);
    const classification = resultMatch ? resultMatch[1] : "判別不能";

    sheet.getRange(row, 5).setValue(classification);

    // ネガティブなら通知
    if (classification === "ネガティブ") {
      const subject = "【注意】ネガティブなご意見がありました";
      const body = `行番号: ${row}\n数値評価: ${rating}\nご意見: ${comment}\n\nChatGPTによる評価: ${classification}\n理由:\n${analysis}`;
      GmailApp.sendEmail(STAFF_EMAIL, subject, body);
    }

    // すべてに返信(メールアドレスがある場合のみ)
    if (email && ["ポジティブ", "中立", "ネガティブ"].includes(classification)) {
      sendFeedbackReply(email, classification);
    }
  }
}


function getChatGptReply(prompt) {
  const url = 'https://api.openai.com/v1/chat/completions';
  const payload = {
    model: 'gpt-4o', // または gpt-3.5-turbo
    messages: [
      { role: 'system', content: 'あなたは製品レビューの分析アシスタントです。' },
      { role: 'user', content: prompt }
    ],
    max_tokens: 300,
    temperature: 0.3
  };

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

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

  if (json.choices && json.choices.length > 0) {
    return json.choices[0].message.content.trim();
  } else {
    return "ChatGPTからの評価を取得できませんでした。";
  }
}

function sendFeedbackReply(email, type) {
  let subject = "レビューへのご返信ありがとうございます";
  let body = "";

  if (type === "ネガティブ") {
    body = `このたびは貴重なご意見をお寄せいただき、誠にありがとうございます。\n\nご不快な思いをさせてしまい、申し訳ございませんでした。頂いた内容は真摯に受け止め、今後の改善に役立ててまいります。\n\n何かご不明点などございましたら、お気軽にご連絡くださいませ。`;
  } else {
    body = `このたびはレビューをご投稿いただき、誠にありがとうございます。\n\nいただいたご意見は、今後の製品やサービス改善の参考とさせていただきます。\n\n今後ともどうぞよろしくお願いいたします。`;
  }

  GmailApp.sendEmail(email, subject, body);
}

---------------------------------------------------------

トリガーをセット

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

 


✅ ネガティブな意見には即時通知

ChatGPTの評価が「ネガティブ」とされた場合は、指定した担当者のメールアドレス宛に通知が飛びます。

通知例:

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

これにより、重要なご意見を見逃すことなく、スピーディーに社内対応へつなげることが可能になります。


✅ ユーザーへの自動返信も実装

フォーム入力時にメールアドレスを取得していれば、ChatGPTの判定結果に応じて、以下のような返信を自動で送ることができます。

  • ポジティブ・中立な意見

    このたびはレビューをご投稿いただき、誠にありがとうございます。今後のサービス改善に役立ててまいります。

  • ネガティブな意見

    ご不快な思いをさせてしまい、誠に申し訳ございません。ご意見は真摯に受け止め、改善に努めてまいります。

誠意ある対応がスピーディーにできることで、ユーザーの心象も大きく変わります。


ChatGPTによる感情分析の精度は?

筆者の実感として、このシステムはかなりの精度でレビューを判定してくれます。

たとえば、★5評価でもご意見が皮肉っぽかったり、表面的に好意的でもトーンが否定的な場合は、ChatGPTが「ネガティブ」と判断して通知してくれました。

逆に、若干曖昧な感想や口語表現(例:「やばいです!」)も、評価と掛け合わせた文脈で適切に判断でき、「これはすごい」と素直に感じたほどです。

もちろん素直にお客様の評価ミスなどの可能性もあるので、完璧ではありませんが、「AIがちょっと厳しめに判定してくれる」くらいのバランス感で運用すると、人の目で最終判断もしやすく、むしろ安心材料になります。

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知


応用例:SNSやレビューサイトにも展開可能

このスクリプトをベースにすれば、以下のような活用も可能です:

  • SNS(X、Instagramなど)から特定ワードを拾って感情分析

  • ECサイトのレビューを定期監視し、否定的なレビューだけ通知

  • 社内アンケートで職場の満足度などを可視化し、リスク把握に活用

これらを月800円〜のChatGPT API料金だけで実現できるのは、まさに近未来的です。


まとめ:AIで“気付き”を自動化し、ユーザーの声に素早く寄り添う

GoogleフォームとGAS、そしてChatGPTを組み合わせれば、たった数行のコードで感情に寄り添った対応が自動化できます。

  • 忙しい中でも、重要なご意見を見逃さない

  • ユーザーに対して、即時に心ある返信を返せる

  • 社内の改善活動にもリアルな声を役立てられる

まさに、「小さな仕組みで、大きな信頼を育てる」ことができるツールです。

まずはこの仕組みを導入して、あなたのサービスにもやさしい自動化を取り入れてみませんか?

▼GASとChatGPTの連携でさらなるカスタマイズをしたい方はこちらの書籍もおすすめです。

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

Google Apps Script × ChatGPTのツボとコツがゼッタイにわかる本

新品価格
¥1,960から
(2025/4/5 11:45時点)

▼ 役に立ったらブックマークお願いします!

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知

ChatGPT×Googleフォームで感情分析!否定的レビューを即通知
人気ブログランキング