Edited at

QiitaのGoogle AnalyticsのレポートをTreasureDataに送ってみる

More than 3 years have passed since last update.

Qiitaには、GoogleAnalytics(GA)を埋め込む機能がある。

GAを見てみると、300 PV/Week というしょんぼりした数値・・・😞

以前、設定していて放置していたが、TDのブログでもGoogle AnalyticsのログをJavascript SDKを使って送る方法が掲載されたので、QiitaのGAのレポートをトレジャーデータに送ってみる。


セットアップ手順


  1. Google Analytics Profile ID

  2. Treasure Data API key

  3. Standalone Google Script Service with Analytics API enabled.

  4. Setup Google App Script

  5. Setup Trigger to run the script


Google Analytics Profile IDの取得

Google Analyticsにログインした状態で、Managementページに行く。

すると、URLにa<ACCOUNT_ID>w<WEB_PROPERTY_ID>p<PROFILE_ID>/が付与されるので、p以下の値をメモる。

例: https://analytics.google.com/analytics/web/#management/Settings/a11111111w111111111p11111111/


Treasure DataのAPI KEYの取得

TreasureDataにサインアップした状態で、プロフィールのページにアクセスする。

Generate NewでWrite Only Keyを新規発行してメモする。


Google Analytics APIを有効化

Google Consoleにアクセスして、Analytics APIを有効化する。

Google App Scriptのプロジェクトと同じにするために、次の設定を行う際にリソース->Developer Consoleプロジェクトを開いて、スクリプトが関連づけられているプロジェクトから、有効化をすると楽かもしれない。


Google App ScriptでJavascript SDKを使ってTDにログを送る。

Google App Scriptにログインする。

また、上記ではプロジェクトに対してGoogle Analytics APIの有効化を行ったが、

Google App ScriptからもAnalyticsAPIの有効化を行う(参考:GoogleAppsScriptでGoogleAnalyticsのAPIを利用)。

リソース -> Googleの拡張サービスから、Google Analytics API (v3)を有効化する。

kiyoto-sanスクリプトをコピる。

そして、コピペしたコードの一部を編集する。

特に、groupBymetricssortByで使える変数は、Analytics Reporting API V3を参照すること。ちなみに、現在v4がでているので、そのうちスクリプトを修正する必要があるかと思います。

修正点1: profileIdなどを上記で準備した値に変更

INPUTS = {

groupBy: ['country'],
metrics:['visits'],
sortBy:['visits'],
profileId: 'YOUR_GA_PROFILE_ID',
databaseName: 'google_analytics',
tableName: 'sample_report',
tdAPIKey: 'YOUR_TD_API_KEY'
}

修正点2: 条件チェックを外す

-    if (!dimName.startsWith("ga:")) { dimName = "ga:" + dimName; }

+ dimName = "ga:" + dimName;

修正点3: 廃止予定の関数を修正

-  var yesterdayStr = Utilities.formatDate(yesterday, Session.getTimeZone(), 'yyyy-MM-dd');

+ var yesterdayStr = Utilities.formatDate(yesterday, Session.getScriptTimeZone(), 'yyyy-MM-dd');

関数を選択で、mainを選択し、実行すると、国毎に集約されたPV数が出力される


トリガーの設定

上記で作成したスクリプトをトリガーを使って定期的に実行する。下記の設定で毎日1~2時頃に前日のGAのレポートをTDに出力できる。


まとめ

今回は、Qiitaのデータを取得しているGoogle Analyticsのレポートを、Google App ScriptからTDのJavascript SDKを利用して、定期的にデータを送る方法を紹介しました。