Google Analytics から PageView の多い順で パスを取得したくなりました。ruby です。
なんか、 garb
という gem もあったりするのですが、google-api-client
を使う方法でやります。クレデンシャルとかが最初よくわからなかったのですが、斜め向かいの席の方に教えてもらい無事できましたので、備忘録です。
最初にファイル構成と流れをご紹介します。そのあとに、クレデンシャルやちょっとハマったところを書きます。
ファイル構成
$ tree
.
├── Gemfile
├── Gemfile.lock
├── analytics_credential.json
└── ga.rb
こんな構成です。
ファイル内容と流れ
Gemfile
source "https://rubygems.org"
gem 'google-api-client'
bundle i
ga.rb
が本体になります。ポイントはコメントで書いておきます。
ga.rb
require 'google/apis/analytics_v3'
CREDENTIAL_PATH = './analytics_credential.json' # これは事前に取得しておく必要があります
VIEW_ID = {VIEW_ID} # ここはそれぞれ
SCOPES = ['https://www.googleapis.com/auth/analytics.readonly']
client = Google::Apis::AnalyticsV3::AnalyticsService.new
client.authorization = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open(CREDENTIAL_PATH),
scope: SCOPES
)
data = client.get_ga_data(
"ga:#{VIEW_ID}",
(Date.today-10).strftime, # たとえば10日前からのデータ
(Date.today).strftime,
"ga:pageviews",
{
dimensions: "ga:pagePath",
sort: "-ga:pageviews", # 降順はマイナスをつける
max_results: 10 # 上位10件だけ取得
}
)
data.rows.each do |row|
p row
end
これで、以下のような結果を得ることができました。
$ ruby ga.rb
["/", "10430"]
["/franchises/2129", "9518"]
["/budget_1", "4288"]
["/event/44?site=app", "3403"]
["/dokuritsu_kaigyo/1932", "2347"]
["/?utm_group=G045&device=SP&creative=IF", "2122"]
["/ranking", "2044"]
["/franchises/2105", "2013"]
["/?utm_group=G009&device=PC&creative=text", "1999"]
["/lp/soc_lp?site=yahoo", "1765"]
クレデンシャルはどうやって取得するのか?
これが、けっこうややこしい気がします。
- まず console で、プロジェクトをつくります。
- そのあとに、AIP を有効化にすすんで、Analytics API を有効化します。
- そうすると以下の画面にすすめます。「認証情報を作成」というリンクが右上にありますので、そこから作成します。
- 以下のように設定してみます。
- 下のサービスアカウント名は任意です。JSONにチェックをつければ json が手に入ります。(役割は...ちょっと適当です。
Google Analytics に上記で作成した、「サービスアカウントID」を登録する
上で analytics@hoge-hoge.serviceaccount.com
といった形のサービスアカウントIDがつくられました。これをGAの対象としたい View のユーザに追加してください。
これをしないと
User does not have any Google Analytics Account
となります。
以上です。ありがとうございました! 🍋