Google Analytics APIでリクエストを送る時のフォーマット

Google Analytics APIで、プログラムからリクエストを送る時のフォーマットをまとめました。サンプルとして、Javascriptでのリクエストの送り方を具体例を出しながら解説していきます。

今回は、ブラウザで簡単にテストができるのでJavascriptを使っていきますが、他の言語でも基本的には同じです。

Google Analytics APIのリファレンス

最初に公式リファレンスを確認しておきましょう。今回は、Google Analytics Reporting API v4を使っていきます。他のManagement APIなどでも基本は同じです。

Google アナリティクス Reporting API

リクエストの方法

ライブラリとCLIENT IDの宣言

まずHTMLヘッダにGoogle APIライブラリとCLIENT IDを記載した状態で、

<meta name="google-signin-client_id" content="<REPLACE_WITH_CLIENT_ID>">
<meta name="google-signin-scope" content="https://www.googleapis.com/auth/analytics.readonly">

他の言語でも同様にGoogle APIライブラリとCLIENT IDを使うので、それぞれのサンプルケースなどを参考にしてみてください。

リクエストのフォーマット

続いて、実際にリクエストを飛ばすフォーマットをみていきましょう。下記は、公式ガイドのスクリプトです。

gapi.client.request({
  path: '/v4/reports:batchGet',
  root: 'https://analyticsreporting.googleapis.com/',
  method: 'POST',
  body: {
    reportRequests: [
      {
        viewId: VIEW_ID,
        dateRanges: [
          {
            startDate: '7daysAgo',
            endDate: 'today'
          }
        ],
        metrics: [
          {
            expression: 'ga:sessions'
          }
        ]
      }
    ]
  }
}).then(displayResults, console.error.bind(console));

Javascriptの場合、Google APIライブラリの「gapi.client.request」関数でリクエストを飛ばします。

request関数は、

  • path
  • root
  • method
  • body

の4つの引数が必要です。

まず、Google Analytics APIは利用するAPIによってリクエストメソッドが違います。今回使うReporting API v4は、POSTでリクエストを送りますが、Management APIなどGET方式のものもあるので、公式リファレンスなどで確認してください。

また、リクエストパラメータの設定も、今回のようにbodyに記載するのではなく、params変数に入れるケースもあります。

path、root、methodに関しては、Reporting API v4では定型で、

path: '/v4/reports:batchGet',
root: 'https://analyticsreporting.googleapis.com/',
method: 'POST',

となります。取得するデータが違っても、ここは定型になります。

bodyの部分はリクエストするデータの中身になります。

リクエストの詳細設定

gapi.client.request関数の最後の引数であるbodyの部分をみていきます。

公式ガイドの、

{
  reportRequests: [
    {
      viewId: VIEW_ID,
      dateRanges: [
        {
          startDate: '7daysAgo',
          endDate: 'today'
        }
      ],
      metrics: [
        {
          expression: 'ga:sessions'
        }
      ]
    }
  ]
}

この部分です。

こちらは、reportRequests配列の直下に、

  • viewId (AnalyticsのビューのID)
  • dateRanges (日付の指定)
  • metrics (取ってくるデータの種類。サンプルでは「セッション」を指定しています)

の必須要素を含めた連想配列で記述します。

ビューID

Analyticsのアカウントデータ構造は、

  • (1) アカウント (adminなど)
  • (2) プロパティ (UA-からはじまる文字列)
  • (3) ビュー (数字)

となっています。

ここでいうビューIDとは、(3)のことでAnalyticsの「管理(歯車アイコン)」から、「ビューの設定」メニューをクリックすると確認できます。

Reporting API v4では、リクエストの際にAnalyticsのビューIDが必須になっています。ビューIDも、APIから取得したい場合は、Management APIを使えばアカウント -> プロパティ -> ビューIDと手繰って取得ができますが、Reporting API v4では取得できません。

日付指定

次の要素「dateRanges」は日付指定です。

today(本日)やyesterday(昨日)、7daysAgo(先週)などのよく使う期間は英単語で指定できます。それ以外は、「YYYYMMDD」形式で指定します。

時間単位でのデータが欲しい場合は、他のAPIを使うことになります。

metrics

ここが一番の難関です。

項目を全て覚えるのは大変なので、Googleの公式ツール「Request Composer」を使ったほうが簡単です。

Request Composer | Google Analytics Demos & Tools

Request Composerで実際にフォームを埋めてけば、実際に返ってくるデータと、フォーマット化されたreportRequestsの中身がページに出力されます。

ここをそのまま自分のスクリプトにコピペすれば動くので非常に便利です。

返ってきたデータの処理方法

ここは簡単に解説していきます。

Google APIから返却されるデータは、リクエストのレスポンス本文(response.result)に連想配列で格納されているので、そちらを使います。

公式ガイドの、

.
.
.then(displayResults, console.error.bind(console));

function displayResults(response) {
  var formattedJson = JSON.stringify(response.result, null, 2);
  document.getElementById('query-output').value = formattedJson;
}

の部分です。

上記のサンプルでは、

  • リクエストを受けて
  • displayResults関数で
    • response.resultをJSON配列にして(JSON.stringify)formattedJson変数に格納
    • HTML内のid「query-output」が付与された要素に中身を出力

ということをしています。

大事なのは、「リクエストを受けて」「JSON配列にする」というところだけで、あとは自由に処理ができます。


Google Analytics APIでリクエストを送る時のフォーマットをみてきました。

なかなかまとまったページがないので手探りでやっていくことになりますが、一度慣れてしまえば「metrics」の組み合わせを考えるくらいなので、とても簡単にGoogle Analyticsのデータを使ったアプリやサイトが作れますね。