Node.js
GoogleAnalytics

Node.jsでGoogle AnalyticsのPV数を取得

準備

  1. Google Developer Consoleにアクセス。
  2. 左部の「ライブラリ」から、「Google Analytics Reporting API」を選択し有効化。
  3. 左部の「認証情報」>「認証情報を作成」>「サービスアカウントキー」を選択。
  4. サービスアカウント名、サービスアカウントIDを適当に入力、キーのタイプはJSONを選択、役割は「Project」>「閲覧者」を選択し、「作成」を押すとJSONファイルが生成される。
  5. Google Analyticsにアクセスし、JSON内にある「client_email」を表示・分析権限を付与して登録。

コードを作成

適当にNodeのプロジェクトを作成し、npm install --save googleapisを実行。
googleapisのリファレンスを参考にしながら、下記のコードを作成。メトリクスにはga:pageviewsを指定。

app.js
const {GoogleApis} = require('googleapis');
const google = new GoogleApis();
var analytics = google.analyticsreporting('v4');
var credential = require('./XXXXXXXX.json');        //準備時に生成したJSONファイルを指定
var viewId = 'XXXXXXXXX';                           //GoogleAnalyticsのビューidを指定
var startDate = "2018-01-01";                       
var endDate = "2018-04-01";

var jwtClient = new google.auth.JWT(credential.client_email, null, credential.private_key, ["https://www.googleapis.com/auth/analytics.readonly"], null);

jwtClient.authorize((error, tokens) => {
    if (error) {
        console.log(error);
        return;
    }
    analytics.reports.batchGet({
        resource: {
            "reportRequests": [
                {
                    "dateRanges": [
                        {
                            "startDate": startDate,
                            "endDate": endDate
                        }
                    ],
                    "viewId": viewId,
                    "dimensions": [
                        {
                            "name": "ga:pagePath"
                        }
                    ],
                    "metrics": [
                        {
                            "expression": "ga:pageviews"
                        }
                    ],
                }
            ]
        },
        auth: jwtClient
    }, (error, response) => {
        if (error) {
            console.log(error);
        }
        const pv = response.data.reports[0].data.rows[0].metrics;
        console.log('pv');
        console.log(pv);
    });
});

実行

node app.jsで実行すると下記のようなログが出力される。
スクリーンショット 2018-03-31 16.24.00.png

GoogleAnalyticsでも一応確認。
スクリーンショット 2018-03-31 16.23.45.png
ログの値と、ページビュー数が一致していることから、正しく値を取得できていることを確認。

参考

https://github.com/google/google-api-nodejs-client
http://beyondjapan.com/blog/2017/04/get-google-analytics-data-by-nodejs