Node.js + JWT (JSON Web Token) を使用して Analytics API から月間ユニークユーザー数を取得する

とあるサイトの月間ユニークユーザー数を定期的に取得する必要があったため、NodejsでAnalytics APIを利用することにしました。OAuth2での認可にはサービスアカウントを使い、APIリクエストにはJWTを使用します。

サービスアカウントとアクセスキーの作成

Google Developers Consoleでサービスアカウントの作成とアクセスキーを取得する。

プロジェクトの作成

「プロジェクトを作成」ボタンを押下し現れたダイアログに、任意のプロジェクト名を入力。他はそのままで、「作成」ボタン押下する。

01.create_project

Analytics APIの有効化

プロジェクトページに移動するので「APIと認証」の「API」をクリック。

02.select_api

左側に表示されるテキストボックス(100件以上のすべてのAPIを検索)に「analytics」と入力すると、その下のリストがフィルタリングされて、「Analytics API」が現れるので、それをクリック。

03.search_api

「APIを有効にする」をクリック。

04.enable_api

サービスアカウントの作成

左メニューの「APIと認証」の「認証情報」をクリック。

05.select_auth

「OAuth」の「新しいクライアントIDを作成」をクリックするとダイアログが表示されるので、「サービスアカウント」を選択し、「クライアントIDを作成」ボタンを押下する。

06.create_servie_account

キーの生成が完了すると、JSONキーのダウンロード画面が現れれますが、今回は不要なので、保存してもしなくてもOK。

アクセスキーのダウンロード

「新しいクライアントIDを作成」の右側に先ほど生成したサービスアカウントの情報があるので「メールアドレス」(※1)をメモしておく。

07.created_service_account

次にその下にある「新しいP12キーを作成」ボタンを押下する。

生成されたキーのダウンロード画面が表示されるので、保存する。(※2)
また同時に表示されているダイアログに「秘密キーのパスワードが下に表示されます。後でもう一度表示することはできません。」の下にキーのパスワード(※3)が表示されているので、メモしておく。

08.create_p12key

Google Analyticsの閲覧権限の付与と対象情報の取得

Google Analyticsで、月間ユニークユーザー数を取得するanalyticsのビューIDと、それに対する閲覧権限をサービスアカウントに付与する。

ビューIDの取得

Google Analyticsにアクセスし、対象のサイトを選択する。

上部メニューの「アナリティクス設定」を選択する。

09.analytics_view

「ビュー」列の「ビュー設定」を選択し、「基本設定」の「ビューID」(※4)をメモしておく。

10.analytics_viewid

閲覧権限をサービスアカウントに付与する

アナリティクス設定を選択し、「ビュー」列の「ユーザー管理」を選択。

09.analytics_view

「権限を付与するユーザー」テキストボックスにサービスアカウントのメールアドレス(※1)を入力、権限を「表示と分析」にして「追加」ボタンを押下する。

12.analytics_input_email

上部のユーザーリストに追加されているのを確認する。

13.analytics_userlist_refresh


以降の作業はCentOS上で行っています。

下準備

JavaScriptの記述をCoffeeScriptで行っているため、インストールする。

$ npm install -g coffee-script

Nodejs用のGoogle APIモジュールのインストールする。

$ npm install googleapis

日時計算にMoment.jsを用いるのでインストールする。

$ npm install moment

アクセスキーのフォーマット変換

先ほどダウンロードしたキー(※2)をgoogleapi-privatekey.p12とリネームしてUPする。

opensslコマンドを使用して、PKCS12形式からPEM形式に変更する。途中、パスワードの入力を促されるので、ダウンロード時に表示されていたパスワード(※3)を入力する。

$ openssl pkcs12 -in googleapi-privatekey.p12  -out googleapi-privatekey.pem -nocerts -nodes
Enter Import Password:
MAC verified OK

プログラム

2015年4月の月間ユニークユーザー数を取得する。

はサービスアカウントのメールアドレス(※1)
googleapi-privatekey.pemはPEM形式のアクセスキーファイル。(googleapi-privatekey.pemとanalytics.coffeeは同一階層に配置)
はGoogleAnalyticsのビューID(※4)

実行

$ coffee analytics.coffee
Visitors: 12345

メモ

閲覧権限付与後すぐにプログラムを実行した場合、

 reason: 'insufficientPermissions',
 message: 'User does not have any Google Analytics account.' 

と表示されエラーとなりますが、反映に時間がかかるので、しばらく待てば正常に取得できます。

参考

広告

コメント1件

  1. ピンバック: KPIをチームに浸透させる!Google AnalyticsからデータをSlackに自動投稿する方法 | freshtrax | btrax スタッフブログ

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中