(O+P)ut

アウトプット



(O+P)ut

エンジニアのアウトプット

【GoogleAnalyticsAPI】セッション数をcurlで取得する

スポンサーリンク

はじめに

GoogleAnalyticsのアクセス数である下の数字部分をcurlコマンドで取得する方法を説明します。
f:id:mtiit:20190601232243p:plain

この手法を組み合わせれば複数ブログを運営している方でも一気にアクセス状況を確認可能です。

準備

ビューIDとアクセストークンを取得する

以下記事を参考に取得してください。

既にclient_id、client_secret、refresh_tokenが手元にあるのであれば以下コマンドで取得可能です。

$ curl -d "client_id=XXX&client_secret=XXX&refresh_token=XXX&grant_type=refresh_token" https://accounts.google.com/o/oauth2/token
{
  "access_token": "XXX",
  "expires_in": 3600,
  "scope": "https://www.googleapis.com/auth/analytics",
  "token_type": "Bearer"
}

セッション数の取得

Core Reporting APIを利用します。

Google Analytics > Reporting > Core Reporting API

具体的には以下コマンドで取得できます。

$ curl "https://www.googleapis.com/analytics/v3/data/ga?ids=ga%3A<ビューID>&metrics=ga:visits&dimensions=ga:date&start-date=2019-05-31&end-date=2019-05-31" --header "Authorization: Bearer <アクセストークン>" --header 'Accept: application/json' --compressed 

実行結果は以下です。

{"kind":"analytics#gaData","id":"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:<ビューID>& /
dimensions=ga:date&metrics=ga:visits&start-date=2019-05-31&end-date=2019-05-31", /
"query":{"start-date":"2019-05-31","end-date":"2019-05-31", /
"ids":"ga:<ビューID>","dimensions":"ga:date","metrics":["ga:visits"], /
"start-index":1,"max-results":1000},"itemsPerPage":1000,"totalResults":1, /
"selfLink":"https://www.googleapis.com/analytics/v3/data/ga?ids=ga:<ビューID> /
&dimensions=ga:date&metrics=ga:visits&start-date=2019-05-31&end-date=2019-05-31", /
"profileInfo":{"profileId":"<ビューID>","accountId":"XXX", /
"webPropertyId":"UA-XXX","internalWebPropertyId":"XXX", /
"profileName":"すべてのウェブサイトのデータ","tableId":"ga:<ビューID>"}, /
"containsSampledData":false,"columnHeaders":[{"name":"ga:date","columnType":"DIMENSION","dataType":"STRING"}, /
{"name":"ga:visits","columnType":"METRIC","dataType":"INTEGER"}], /
"totalsForAllResults":{"ga:visits":"707"},"rows":[["20190531","707"]]}

長々と出力されますが、肝心のデータは末尾です。

ちなみに以下の箇所は任意の数字を入れることで複数日付分のデータを取得可能です。

start-date=YYYY-MM-DD&end-date=YYYY-MM-DD

もちろん、当日分を入れてもその時点の値が取得できます。

日付データを入れないとエラーとなる

以下はエラーメッセージです。

{"error":{"errors":[{"domain":"global","reason":"required","message":"Required parameter: end-date","locationType":"parameter","location":"end-date"},{"domain":"global","reason":"required","message":"Required parameter: start-date","locationType":"parameter","location":"start-date"}],"code":400,"message":"Required parameter: end-date"}}

終わりに

GoogleAnalyticsに関するAPIをcurlコマンドで利用した際の流れを残しておきます。
後続の方の参考になれば幸いです。