Help us understand the problem. What is going on with this article?

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

More than 1 year has passed since last update.

準備

  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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away