phoenix-powerGoogle Analyticsを使って、アクセス数を調べてみた

Google Consoleを使って、APIを使えるようにしておき、JSONをダウンロードします。スクリプトディレクトリにclient_secrets.jsonとして保存します。

1
$ gem install google-api-client
analytics.rbLINK
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
#!/usr/bin/env ruby
# coding : utf-8

# 参考
# https://github.com/google/google-api-ruby-client
# https://github.com/google/google-api-ruby-client-samples/tree/master/adsense
# https://developers.google.com/api-client-library/ruby/guide/aaa_oauth
# http://blog.naberon.jp/post/2013/08/25/google-analytics-api/

# こっちのモジュールも良さそう
# http://tsuchikazu.net/googel_analytics_gar/

require 'pp'
require 'json'
require 'pry'
require 'google/api_client'
require 'google/api_client/client_secrets'
require 'google/api_client/auth/installed_app'
require 'google/api_client/auth/file_storage'

CREDENTIAL_STORE_FILE = "#{$0}-oauth2.json"

# Analytics profile ID.
# https://www.google.com/analytics/web/#home/a42353636w43552078pXXXXXXXX/
# なURLのpのあと数字がProfile ID
profileID = 'xxxxxxxxx'

client = Google::APIClient.new(
  :application_name => 'TestProject',
  :application_version => '0.0.1'
)

analytics = client.discovered_api('analytics', 'v3')

store = Google::APIClient::FileStore.new(CREDENTIAL_STORE_FILE)
  authfile = Google::APIClient::Storage.new(store)
  authfile.authorize
#authfile = Google::APIClient::FileStorage.new(CREDENTIAL_STORE_FILE)

unless authfile.authorization.nil?
  client.authorization = authfile.authorization
else
  # ここでDLしたJSONを読み込んでいるので同じディレクトリにclient_secrets.jsonを置いておくこと
  client_secrets = Google::APIClient::ClientSecrets.load

  flow = Google::APIClient::InstalledAppFlow.new(
    :client_id     => client_secrets.client_id,
    :client_secret => client_secrets.client_secret,
    :scope         => ['https://www.googleapis.com/auth/analytics.readonly']
  )

  client.authorization = flow.authorize
  #storage.write_credentials(client.authorization)
  authfile.write_credentials(client.authorization.dup) # 認証情報をファイルに保存
end

startDate = DateTime.now.prev_month.strftime("%Y-%m-%d")
endDate   = DateTime.now.strftime("%Y-%m-%d")

result = client.execute(
  :api_method => analytics.data.ga.get,
  :parameters => {
    'ids'        => "ga:" + profileID,
    'start-date' => startDate,
    'end-date'   => endDate,
    'metrics'    => 'ga:visitors,ga:visits,ga:pageviews',
    'dimensions' => 'ga:pagePath,ga:pageTitle',
    'sort'       => '-ga:pageviews'
  }
)

body = JSON.parse(result.response.body)
body['rows'].each do |row|
  pp row
end

認証情報が保存されてない場合は、ブラウザを開き、保存します。ファイルは、#{$0}-oauth2.jsonです。

1
$ ./analytics.rb| jq -r '.[1,3]' | head -n 20

あまりアクセスはなく、アドベントカレンダーでしか人が来てないことが分かります。

MBA-HACK2
449
Vimのマークについて - MBA-HACK2
580
zshで使用頻度が高いもの - MBA-HACK2
240
Webサービスを整理してみた - MBA-HACK2
72
Bootstrapのメニューバーをマウスオーバーで開く - MBA-HACK2
41
Arch Linux GUI - MBA-HACK2
12
AIと会話をしてみたよ - MBA-HACK2
13
MBA-HACK2
0
システム情報の確認にinxiが便利だった件 - MBA-HACK2
9
Arch LinuxのChromiumが文字化けする - MBA-HACK2
20

これで、人気記事順に表示するプラグインとか作れそうですね。