Google API 第13回
今回はGoogle AnalyticsのAPIについて紹介します。
■Google AnalyticsのAPI
ウェブサイトの分析に特化したAPIです。APIの機能は大きく分けて2つあります。
分析してレポートを作成できるAnalytics Reporting APIsとアカウントやプロパティなどを管理できるConfiguration APIsです。Analytics Reporting APIsには5つのAPI、Configuration APIsには2つのAPIがあります。
■Analytics Reporting APIsについて
・Analytics Core Reporting API
カスタムレポートを作成できるAPIです。
・Analytics Multi-Channel Funnels Reporting API
コンバージョンに到るまでの経路を分析できるAPIです。
・Analytics Real Time Reporting API
ウェブサイトで発生しているアクティビティをリアルタイムで分析できるAPIです。
・Analytics Embed API
ウェブサイトにダッシュボードを作成し埋め込むことができるAPIです。
・Analytics Metadata API
レポート作成に必要なリストや列の属性(ディメンションと指標)を取得できるAPIです。
このAPIは列属性の概要や今後廃止される列属性を調べるのに役立ちます。
■Configuration APIsについて
・Analytics Management API
アカウントやプロパティ、ビューなどを管理できるAPIです。
・Analytics Provisioning API
新しいGoogle Analyticsアカウントを作成できるAPIです。
APIが7つあるので複数回に分けて紹介します。
今回はAnalytics Core Reporting APIについて紹介します。
■Analytics Core Reporting APIについて
Google Analyticsで収集されたデータからカスタムレポートを作成できます。
レポートはディメンションとメトリックから構成されます。
ディメンションはサイトを訪問したユーザーのセッションや行動の性質で
メトリックはその性質を定量化したデータです。
■APIのバージョンについて
現在、APIのバージョンはXMLに対応しているバージョン2.4と
JSONに対応しているバージョン3.0があります。
※以前のバージョン2.3は廃止されています。
■Analytics Core Reporting APIを使用方法
VBAを用いた方法を紹介します。
Google APIを用いたVBAの認証方法は前回紹介しているので省略します。
※Google APIを用いたVBAの認証方法は
参考サイトにあるGoogle API 第12回を参照してください。
バージョン2.4とバージョン3.0のレスポンス処理の仕方を説明します。
・バージョン2.4
まずリクエストするURLを作成します。
baseUrl = "https://www.googleapis.com/analytics/v2.4/data" sUrl = baseUrl sUrl = sUrl & "?ids=ga:" & CStr(viewID) sUrl = sUrl & "&start-date=" & Format(sDate, "YYYY-MM-DD") sUrl = sUrl & "&end-date=" & Format(eDate, "YYYY-MM-DD") sUrl = sUrl & "&metrics=ga:pageviews" sUrl = sUrl & "&dimensions="
必須パラメータはids、start-date、end-date、metricsです。
idsには解析するビューIDを指定します。
start-dateとend-dateには解析する期間を指定します。
metricsとdimensionsには取得するパラメータを指定します。
※パラメータは参考サイトのAnalyticsのdimensionsとmetricsを参照してください。
次にヘッダーにAPI通信するためのアクセストークンとXMLを取得するためのコンテンツタイプを付与しリクエストを行います。
oHTTP.Open "GET", sUrl, False oHTTP.setRequestHeader "Authorization", "Bearer " & access_token oHTTP.setRequestHeader "Content-Type", "application/atom+xml" oHTTP.send
返り値は下記のようなXMLで取得できます。
リクエストしたデータは「entry/dxp:metric」タグに格納されています。
データを取得するときは「entry/dxp:metric」タグのnameを指定する必要があります。
ここでは「ga:pageviews」を指定すると値が取得できます。
<?xml version="1.0" encoding="UTF-8"?> <feed xmlns="http://www.w3.org/2005/Atom" xmlns:dxp="http://schemas.google.com/analytics/2009" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/"> <id>https://www.googleapis.com/analytics/v2.4/data?ids=ga:xxxxxx&metrics=ga:pageviews&start-date=2014-05-01&end-date=2014-05-31</id> <updated>2015-06-25T05:15:32.044Z</updated> <title type="text">Google Analytics Data for View (Profile) xxxxxx</title> <link rel="self" type="application/atom+xml" href="https://www.googleapis.com/analytics/v2.4/data?ids=ga:xxxxxx&metrics=ga:pageviews&start-date=2014-06-01&end-date=2014-06-25"/> <author> <name>Google Analytics</name> </author> <generator>Google Analytics</generator> <openSearch:totalResults>1</openSearch:totalResults> <openSearch:startIndex>1</openSearch:startIndex> <openSearch:itemsPerPage>1000</openSearch:itemsPerPage> <dxp:aggregates> <dxp:metric name="ga:pageviews" type="integer" value="1000"/> </dxp:aggregates> <dxp:containsSampledData>false</dxp:containsSampledData> <dxp:dataSource> <dxp:property name="ga:profileId" value="xxxxxx"/> <dxp:property name="ga:webPropertyId" value="UA-xxxxxxx-1"/> <dxp:property name="ga:accountName" value="test"/> <dxp:tableId>ga:xxxxxx</dxp:tableId> <dxp:tableName>テストサイト</dxp:tableName> </dxp:dataSource> <dxp:endDate>2014-06-25</dxp:endDate> <dxp:startDate>2014-06-01</dxp:startDate> <entry> <id>https://www.googleapis.com/analytics/v2.4/data?ids=ga:xxxxxx&start-date=2014-06-01&end-date=2014-06-30</id> <updated>2015-06-25T05:15:32.044Z</updated> <title type="text"/> <link rel="alternate" type="text/html" href="http://www.google.com/analytics"/> <dxp:metric name="ga:pageviews" type="integer" value="1000"/> </entry> </feed>
下記のような処理をすることで「ga:pageviews」の値を取得できます。
Set oXML = CreateObject("MSXML2.DOMDocument") oXML.LoadXML oHTTP.ResponseText For Each oEle In oXML.getElementsByTagName("entry/dxp:metric") If oEle.getAttribute("name") = "ga:pageviews" Then lPV = CLng(oEle.getAttribute("value")) End If Next
・バージョン3.0
まずリクエストするURLを作成します。
バージョン2.4との違いはベースとなるURLです。
baseUrl = "https://www.googleapis.com/analytics/v3/data/ga" sUrl = baseUrl sUrl = sUrl & "?ids=ga:" & CStr(viewID) sUrl = sUrl & "&start-date=" & Format(sDate, "YYYY-MM-DD") sUrl = sUrl & "&end-date=" & Format(eDate, "YYYY-MM-DD") sUrl = sUrl & "&metrics=ga:pageviews" sUrl = sUrl & "&dimensions="
次にヘッダーにAPI通信するためのアクセストークンとJSONを取得するためのコンテンツタイプを付与しリクエストを行います。
oHTTP.Open "GET", sUrl, False oHTTP.setRequestHeader "Authorization", "Bearer " & access_token oHTTP.setRequestHeader "Content-Type", "application/x-www-form-urlencoded;charset=UTF-8" oHTTP.send
返り値は下記のようなJSONで取得できます。
リクエストしたデータはrowsに配列として格納されています。
{ "columnHeaders": [ { "columnType": "METRIC", "dataType": "INTEGER", "name": "ga:pageviews" } ], "containsSampledData": false, "id": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:xxxxxx&metrics=ga:visits,ga:pageviews&start-date=2015-06-01&end-date=2015-06-25", "itemsPerPage": 1000, "kind": "analytics#gaData", "profileInfo": { "accountId": "xxxxxxxx", "internalWebPropertyId": "xxxxxxx", "profileId": "xxxxxx", "profileName": "すべてのウェブサイトのデータ", "tableId": "ga:xxxxxx", "webPropertyId": "UA-xxxxxxxx-1" }, "query": { "end-date": "2015-06-25", "ids": "ga:xxxxxx", "max-results": 1000, "metrics": [ "ga:pageviews" ], "start-date": "2015-06-01", "start-index": 1 }, "rows": [ [ "593" ] ], "selfLink": "https://www.googleapis.com/analytics/v3/data/ga?ids=ga:xxxxxx&metrics=ga:visits,ga:pageviews&start-date=2015-06-01&end-date=2015-06-25", "totalResults": 1, "totalsForAllResults": { "ga:pageviews": "593" } }
下記のような処理をすることで「ga:pageviews」の値を取得できます。
json = "(" & oHTTP.ResponseText & ")" Set d = CreateObject("htmlfile") Set elm = d.createElement("span") elm.setAttribute "id", "result" d.appendChild elm d.parentWindow.execScript "document.getElementById('result').innerText=eval(" & json & ").rows[0][0];" lPV = elm.innerText
以上がAnalytics Core Reporting APIの説明になります。
Analytics Core Reporting APIのバージョン2.4とバージョン3.0の差はXMLとJSON処理の差だけなので、使い勝手にほとんど違いはありませんでした。
Analytics Core Reporting APIはVBAとの相性が良く取得したデータを直接Excelに書き出したり、データの出力先を固定し簡単にグラフを作成することができます。
VBAを用いてウェブサイト解析を行いたい方や独自のウェブサイト解析を考えている方はこの機会に是非試してみてはいかがでしょうか。
次回は、Analytics Multi-Channel Funnels Reporting APIについて紹介します。
<参考サイト>
・Analytics Core Reporting API
・Analyticsのdimensionsとmetrics
・Google API 第12回