Google Analytics アフィニティ カテゴリの英語の対訳を Bing Translate API で作成する


Google Analytics アフィニティカテゴリの日本語翻訳を返すpython ファンクションを作成する | Monotalk で python 英語、日本語の変換辞書を作っていたのですが、Google Ads の ヘルプに、その他のカテゴリの一覧が、ありましたので、英語日本語変換用の TSV ファイルを作ってみました。
結果を記載します。


その他 の一覧 英語


その他 の一覧 日本語

日本語のページもありますが、並び順が英語ページとは異なり、単純なコピー&ペーストだと対訳が作れませんでした。


アフィニティ カテゴリ、購買意向カテゴリ、その他のカテゴリ の違い

当初、上記の一覧は、アフィニティカテゴリ かと思っていたのですが、対訳が VLOOPUP でヒットせず、その他のカテゴリであることに気がつきました。
ユーザー属性とインタレスト カテゴリについて - アナリティクス ヘルプ
に、アフィニティ カテゴリ、購買意向カテゴリ、その他のカテゴリ の違い について記載されています。
返却される、カテゴリの英語名称は、似て非なるものです。


手順

以下のような手順で、英語の対訳を作成しました。

  1. スプレッドシートに、Topics used for personalized ads - Ads Help の内容をコピー&ペーストする。

  2. 文字列、category:: を除去。

  3. >/ に置換。

  4. Google Apps Script で、Translator Text API を呼び出し翻訳する。


Google Apps Script で、Translator Text API を呼び出し翻訳する。

作成したスクリプトの説明を記載します。
API の Key の発行方法や、Translator Text API の使い方は以下の記事を参考にしました。
Azure Bot Service ✕ Cognitive Servicesで英語に翻訳するChat Botを作ってみる - Qiita

  • translate.gs

    KEY = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
    SHEET_NAME = 'sheet_name';
    
    function translate() {
     // token の取得
     token = getCognitiveApiToken_();
    
     // シートを取得する
     var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
     var sheet = spreadsheet.getSheetByName(SHEET_NAME);
     // 最終行のインデックスを取得
     var index = sheet.getLastRow();
     var values = sheet.getRange("A1:"+ "B" + new String(index)).getValues();
     var tmpValues = values;
     for (var i = 1; i < values.length; i++){
       if(values[i][1] == "") {
          // &amp; 等が含まれるのでdecodeする
          translateText = unescapeHTML_(translateText_("ja", values[i][0], token));
          // 翻訳結果を設定する
           sheet.getRange("B" + new String(i + 1)).setValue(translateText);
       }
     }
    }
    
    // 実体参照 を 通常の文字列に変換する
    function unescapeHTML_(str) {
      return str
      .replace(/&lt;/g,'<')
      .replace(/&gt;/g,'>')
      .replace(/&amp;/g,'&');
    }
    
    // Tokenを発行する
    function getCognitiveApiToken_() {
        //URLを取得
        var fullUrl = "https://api.cognitive.microsoft.com/sts/v1.0/issueToken";
        var headers = {
          'Content-Type' : 'application/jwt',
          'Ocp-Apim-Subscription-Key' : KEY
        };
    
        var options = {
         "method" : "post",
         "headers" : headers,
         "muteHttpExceptions": false
        };
    
        try {
          var response = UrlFetchApp.fetch(fullUrl, options);
        } catch (err) {
          throw err;
        }
        token = response.getContentText("UTF-8")
        return token;
    }
    
    // 翻訳メソッド
    function translateText_(lang, text, token) {
        //URLを取得
        var text = encodeURIComponent(text);
        var fullUrl = "https://api.microsofttranslator.com/V2/Http.svc/Translate" + "?to=" + lang + "&text=" + text;
        var headers = {
          'Authorization' : 'Bearer ' + token
        };
        var options = {
         "method" : "get",
         "headers" : headers,
         "muteHttpExceptions": false
        };
    
        try {
          var response = UrlFetchApp.fetch(fullUrl, options);
        } catch (err) {
          throw err;
        }
        // Translator Text Apiからのレスポンスはstringタグで囲まれているのでタグを除去する
        var result = response.getContentText("UTF-8");
        return result.replace(/<(.+?)>|<\/string>/g, '');
    }
    
    あまり数が多いと、5分制限に引っかかり、途中でエラーになります。再実行すると、落ちたところから翻訳を開始するので、何度か実行すれば全ての対訳が取得できるかと思います。
    訳が微妙なところもありますが、だいたい何が書いてあるのか把握ができる日本語が取得できます。

  • 入力シート 上記のスクリプトは、以下のスプレッドシートのシートをインプットにして、対応する日本語が存在しない語句の日本語訳を取得します。
    "入力シート"


作成したTSVファイルと、スクリプトをgistにUPした。

作成できた対訳と、スクリプトはGoogle Analytics のその他のカテゴリの日本語訳を作成する Google Apps Script にUPしました。TSVなので、excel や、スプレッドシートに貼り付けて使えるかと思います。
個人的には、Google Analytics Spreadsheet Add-on  |  Analytics Implementation Guides and Solutions  |  Google Developers で Google Analytics の ユーザー属性を取得した後、VLOOKUP で 日本語にしようかと思っております。
以上です。

コメント