Amazonで商品を見るセール会場へ

Googleスプレッドシート│Natural Language APIで感情分析をする方法│GCP

テキストがポジティブかネガティブか、どの程度の感情の強さがあるかを判定したいケースがあります。

Google Cloud Platform(GCP)の機械学習機能を利用して感情を判定する方法を解説します。

この手法はセンチメント分析(感情分析)と呼ばれます。

Google Cloud Platformの機械学習機能を利用して感情を判定する感情分析の概要。
目次

Natural Language API の使い方

GCPのNatural Language APIとGoogle Apps Script(GAS)を使い、Googleスプレッドシート上のテキストを感情分析する手順を解説します。

STEP
GCP(Google Cloud Platform)にアクセスしてプロジェクトを作成

画面の案内に沿って操作し、GCPのプロジェクトを作成します。

アカウント設定の途中でクレジットカードの登録が必要です。

アカウント設定におけるクレジットカードの登録画面。

※利用量が無料枠を超えると課金が発生します。

Google Cloudの料金ページでは、Natural Language APIは月5,000ユニットまで無料と記載されています(2026年9月19日に確認)。

GCPコンソールのナビゲーションメニュー>お支払い>料金から利用状況や金額を確認できます。

GCPコンソールのナビゲーションメニューからお支払いと料金を開いて利用状況や金額を確認する画面。
STEP
APIを有効にする

GCPのプロジェクト作成後、「APIとサービス」の「認証情報」を開いて「認証情報を作成」をクリックし、>「APIキー」を選択して発行します。

GCPのプロジェクト作成後にAPIとサービスの認証情報からAPIキーを発行する手順。

APIキーが発行されたら値をコピーして控えておきます。

後のスクリプト設定で使用します。

発行されたAPIキーの値をコピーして控えておく画面。
STEP
スプレッドシートとGASの作成

Googleスプレッドシートを新規作成し、メニューの「拡張機能」(または「ツール」)から>「Apps Script」(スクリプトエディタ)を開きます。

エディタが開いたら、後述のコードを貼り付けます。

コード内のAPIキー、スプレッドシートID、シート名、処理対象の行数などを環境に合わせて設定します。

//シートIDとシート名を記載
var mySheet = SpreadsheetApp.openById("スプレッドシートID").getSheetByName(
  "シート名"
);

//Natural Language APIキー
var apiKey = "APIキー";

//8個までしか処理できないので、開始行と終了行を記載する
function main() {
  getSentiment(2, 9);
  getSentiment(10, 15);
}

function getSentiment(start, end) {
  for (i = start; i <= end; i++) {
    var tweet = mySheet.getRange(i, 1).getValue();
    var response = retrieveSentiment(tweet);
    var json = JSON.parse(response);
    var score = json["documentSentiment"]["score"];
    var magnitude = json["documentSentiment"]["magnitude"];

    mySheet.getRange(i, 2).setValue(score);
    mySheet.getRange(i, 3).setValue(magnitude);
  }
}
function retrieveSentiment(textData) {
  var apiEndpoint =
    "https://language.googleapis.com/v1/documents:analyzeSentiment?key=" +
    apiKey;

  var docDetails = {
    language: "ja-jp",
    type: "PLAIN_TEXT",
    content: textData,
  };

  var nlData = {
    document: docDetails,
    encodingType: "UTF8",
  };

  var nlOptions = {
    method: "post",
    contentType: "application/json",
    payload: JSON.stringify(nlData),
  };

  var response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
  Logger.log("json is :" + response);
  return response;
}

function onOpen() {
  var entries = [{ name: "センチメント分析", functionName: "main" }];
  mySheet.addMenu("カスタムメニュー", entries);
}
onOpen();

スプレッドシートの画面に戻り、F5キーなどでブラウザを再読み込みします。

スプレッドシートのメニューバーに独自のカスタムメニューが追加されます。

分析対象の文章をA列に入力します。

追加されたメニューからスクリプトを実行すると、分析結果が出力されます。

追加されたメニューからスクリプトを実行してスプレッドシートに出力された感情分析の結果。
  • Score:数値が負ならネガティブ、正ならポジティブな感情を示します。
  • Magnitude:感情の絶対的な強度(強さ)を示します。
STEP
表示を見やすくする

数値だけでは傾向を把握しにくいため、条件付き書式を設定してセルに色を付けます。

  • Score列の例:0は白色、0.5以上は赤色、0未満は青色に設定します。
  • Magnitude列(カスタム書式)の例:Scoreが0以上かつMagnitudeが0.5以上なら赤色、Scoreが0以下かつMagnitudeが0.5以上なら青色に設定します。
=AND($B2 >=0 , ($C2 >= 0.5))
=AND($B2 < 0 , ($C2 >= 0.5))
スプレッドシートに設定した条件式の入力例。
スプレッドシート上で感情分析を実行するための設定画面。

以上の設定で、スプレッドシート上での感情分析が完了します。

スプレッドシート上での感情分析の設定が完了した様子。

Googleスプレッドシートの関連Tipsは、まとめセクションのリンク先でも確認できます。

この記事で紹介しているコードは、GitHubのMOTOKI-LLC/cg-method-codeにもまとめています。

外部のサービスと連携する記事は、ほかにもあります。

まとめ

GCPのNatural Language APIとGoogle Apps Scriptを連携させ、文章の感情分析を行う方法を解説しました。

APIキーの準備と簡単なスクリプト連携だけで高度な自然言語処理を手軽に活用できます。

感情スコアを可視化しておくことで、アンケートやレビュー文章の傾向把握を効率化できます。

無料利用枠が用意されているため、まずは少量のデータから試してみることをおすすめします。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次