問題 Google Spreadsheetのセルを引数に、感情分析の結果を返したいです。
答え App Scriptsに以下をコピペして、APIキーを書き換えます。(元のソースはこちら)
//Natural Language APIキー
const apiKey = "ここにAPIキーを入れる";
function retrieveSentiment(textData) {
const apiEndpoint = "https://language.googleapis.com/v1/documents:analyzeSentiment?key=" + apiKey;
const nlData = {
document: {
language: "ja-jp",
type: "PLAIN_TEXT",
content: textData,
},
encodingType: "UTF8",
};
const nlOptions = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(nlData),
};
const response = UrlFetchApp.fetch(apiEndpoint, nlOptions);
const json_res = JSON.parse(response)
return [[json_res.documentSentiment.score, json_res.documentSentiment.magnitude]];
}
結果を表示したいセルに=retrieveSentiment(A2)
を入力するとA2セルの内容を感情分析した結果が返ってきます。
1列目は感情のポジティブ・ネガティブの度合い、2列目は感情の強さになっています。
コードをスプレッドシートにコピーする
Google Spreadsheetのメニューから[拡張機能]→[App Script]をクリックします。
ソースコードを貼り付けます。
もちろんapiKeyが適当なのでこれでは動きません。APIキーを取得していきます。
Google Cloud APIの有効化して、APIキーを取得するまで
上記のコードをGoogle Spreadsheet上で動かすには、以下3つの手順を進める必要があります。
- Cloud Natural Language APIを有効化する(要クレジットカード)
- APIキーを取得する
- ソースコードのAPIキーを置き換える
1. Cloud Natural Language APIを有効化する
GCPのAPIはプロジェクト単位で有効・無効を決められます。プロジェクトを作っていない場合は新規でプロジェクトを作るところから始めます。
Google Cloud横のプルダウンをクリックし、[新しいプロジェクト]をクリックします。
↓
プロジェクト名はなんでも構いません。自分でわかりやすいような命名をしておくと、後々便利になります。組織も任意で作成してください。 [作成]をクリックしてしばらく待つとプロジェクトが作成が完了します。
プロジェクト名が表示されているのを確認して、APIとサービスに移動します。 プロジェクト名がなかったら、クリックしてプロジェクトを選択してください。
①ハンバーガーメニューから②[すべてのプロダクトを表示]をクリックします。
[APIとサービス]をクリックします。
[ライブラリ]をクリックします。
[Cloud Natural Language API]をクリックします。
[有効にする]をクリックします。
このときに「課金が必要」というダイアログが出るときがあります。プロジェクトに請求先アカウントが紐付いていなかったり、クレジットカードを登録していない場合はそれぞれ登録して課金されても対応できるようにしておきます。
これでAPIが使えるようになりました。次に認証情報を作成します。
2. APIキーを取得する
APIとサービスに移動して、[認証情報]をクリックします。
[+ 認証情報を作成]をクリックし、ポップアップが出てきたら、[API キー]をクリックします。
APIキーが表示されたら、コピーして上のコードに貼り付けます。
3. ソースコードのAPIキーを置き換える
スプレッドシートのapiKey
に先ほどのAPIキーを貼り付けます。
これで引数で指定したセルのテキスト情報から、感情分析ができるようになりました。 スプレッドシートに戻って、任意のセルで=retrieveSentiment(セル)
と入力すると、APIの結果が2列に渡って表示されます。
スプレッドシートでGoogleのNatural Language APIを使うときの注意点
上の関数のまま数式を保存してしまうと、スプレッドシートを開くたびにAPIリクエストが行われてしまいます。そして、知らないうちに無料のリクエスト回数を超えてしまうこともあります。(私も3,000円ぐらい溶かしました。。。
APIで出した値は、数式ではなく「値で」データを持っておきましょう。
コメント