Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@nishii

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

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
9
Help us understand the problem. What are the problem?