メニューボタン閉じるボタン

Node.jsを使ってGoogle Analytics APIからデータを取得してみよう

こんにちは、プロダクト開発チームの牧です。
最近、Google Analyticsを触ることが増えてきているのですが、
せっかくなのでGoogle Analytics APIからデータを取得してみました。
今回は、Node.jsを使ってGoogle Analyticsのデータを取得する方法をご紹介します。

Google Analytics API

Googleは提供しているサービスのほとんどをAPIを通じて利用することが出来ます。
Google Analyticsでは以下のAPIが提供されています。

  • Core Reporting API
  • Embed API
  • Multi-Channel Funnels Reporting API
  • Real Time Reporting API
  • Metadata API
  • Management API

用途に応じて様々なAPIを利用することが出来ますが、今回はCore Reporting APIを使用して進めていきます。

OAuth認証情報を取得しよう

Google Analytics APIを利用するにはOAuth認証を行い、アクセストークンを発行する必要があります。
Google API Managerから「OAuth クライアント ID」の認証情報を作成しましょう。

アプリケーションの種類はウェブアプリケーションを選択し、リダイレクト先は「http://localhost」と設定します。
クライアントIDとクライアントシークレットが発行されますので、保存しておきましょう。

Node.jsでアプリケーションを作成しよう

npmでモジュールインストール

Google Analytics APIはREST-APIとしても提供されていますので、HTTPリクエストを行ってデータを取得できますが、
今回はgoogle-api-node-clientを使用します。
google_google-api-nodejs-client__Google_s_officially_supported_Node_js_client_library_for_accessing_Google_APIs__Support_for_authorization_and_authentication_with_OAuth_2_0__API_Keys_and_JWT__Service_Tokens__is_included__API_Reference_Docs_
こちらはGoogleがOSSで提供しているNode.jsクライアントモジュールです。

プロジェクトディレクトリ以下でnpmコマンドを使用しインストールします。

$ cd /path/to/project
$ npm init -y
$ npm install --save googleapis

node_modulesディレクトリ以下にgoogleapisが保存されます。

app.jsの作成

それでは早速プログラムを作成したいと思います。
今回取得するデータは新規ユーザとリピートユーザ毎に
セッション数、新規セッション率、直帰率を過去1ヶ月分取得してみます。

プログラムのコード例は以下となります。

var readline = require("readline");
var googleapis = require("googleapis");

var CLIENT_ID = "CLIENT ID",
CLIENT_SECRET = "CLIENT SECRET",
REDIRECT_URL = "http://localhost",
SCOPE = "https://www.googleapis.com/auth/analytics.readonly",
VIEW_ID = "ANALYTICS VIEW ID";

var rl = readline.createInterface({input: process.stdin, output: process.stdout});
var auth = new googleapis.auth.OAuth2(CLIENT_ID, CLIENT_SECRET, REDIRECT_URL);
var url = auth.generateAuthUrl({scope: SCOPE});

var getAccessToken = function(code){
auth.getToken(code, function(err, tokens){
auth.setCredentials(tokens);
getGaData()
});
}

var getGaData = function(){
var analytics = googleapis.analytics({auth: auth, version: "v3"});
analytics.data.ga.get({
ids: "ga:" + VIEW_ID,
start-date: "30daysAgo",
end-date: "yesterday",
metrics: "ga:users,ga:percentNewSessions,ga:bounceRate",
dimensions: "ga:userType"
}, function(err, rows){
console.log(rows);
});
}

console.log("Visit the url: " + url);
rl.question("Enter then code hear: ", getAccessToken);

まず、先ほど取得したOAuthのクライアントID、クライアントシークレットを置き換えます。
またVIEW_IDはGoogle Analyticsのビューの設定画面から取得することが出来ます。
アナリティクス

これだけでプログラムは完成です。
では実際に動かしてみましょう!

プログラムを実行しよう

nodeコマンドで先ほど作成したプログラムを実行します。

$ node app.js
Visit the url: Authentication URL...
Enter then code hear:

発行されたURLにアクセスすると認証画面が出てきます。
許可のリクエスト
許可をすると設定したリダイレクト先にリダイレクトされます。
URLにはcodeパラメータが付与されていますので「code=」の後をコピーしてプログラムに貼り付けて下さい。
コマンドラインに取得したデータが表示されます。

まとめ

今回はOAuthの認証からAPIを利用してGoogle Analyticsのデータ取得までを行いました。
基本的にAnalyticsのレポートで出るデータはAPIで取得することが出来ますので、
カスタマイズした独自レポートを作りたい場合などにとても有用です。

Google AnalyticsのAPIは今回ご紹介したCoreReportingAPI以外にも多くのAPIがありますので、
今後もご紹介していきたいと思います。

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

今すぐお気軽に
ご相談ください。

0120-315-465

(平日 10:00~19:00)

グラッドキューブは
「ISMS認証」を取得しています。

認証範囲:
インターネットマーケティング支援事業、インターネットASPサービスの提供、コンテンツメディア事業

「ISMS認証」とは、財団法人・日本情報処理開発協会が定めた企業の情報情報セキュリティマネジメントシステムの評価制度です。

いますぐ無料で
お試しください。

SiTest の革新的な機能を
お試しいただけます。
利用規約

お名前【必須】
メールアドレス【必須】
電話番号【必須】