Node.jsを使用してGoogleAnalyticsAPIと対話します

公式を使用して、Node.jsアプリケーションをGoogle AnalyticsAPIとインターフェースする方法を学びますgoogleapisパッケージ。 JSON Web Tokenを使用して、いくつかの例を確認します

注:uBlock Originは、この投稿の画像をブロックします。analyticsパス内の単語。したがって、画像を表示するには、このページでは必ず無効にしてください🖼

この投稿では、Google AnalyticsAPIを使用したいくつかの例を紹介します。Node.js

Googleは素晴らしいnpmパッケージを提供しています:googleapis。これをAPIインタラクションの基本ビルディングブロックとして使用します。

認証は、APIとの対話の大きな部分です。上のこの投稿をチェックしてくださいGoogleAPIに対して認証する方法。この記事では、あなたがそれを読んでいて、実行する方法を知っていると仮定しますJWT認証。

環境変数

ダウンロードしたらJSONグーグルからのキーファイル、入れてclient_emailそしてprivate_key環境変数としての値。これにより、

  • process.env.CLIENT_EMAIL
  • process.env.PRIVATE_KEY

ユーザーをGoogleAnalyticsに追加します

これらの例ではServiceto Service APIを使用しているため、を追加する必要があります。client_emailあなたのGoogleAnalyticsプロファイルへの価値。管理パネルに移動し、をクリックしますユーザー管理、プロパティまたはビューのいずれか。

Google Analytics Settings

そして、で見つけたメールを追加しますclient_emailJSONファイルのキー:

Add a new user

Googleライブラリをインポートする

const { google } = require('googleapis')

覚えておいてください{}の周辺googleオブジェクトからそれを分解する必要があるのでgoogleapisライブラリ(それ以外の場合は呼び出す必要がありますgoogle.googleそしてそれは醜いです)

スコープを定義する

この行はスコープを設定します:

const scopes = 'https://www.googleapis.com/auth/analytics.readonly'

Google Analytics APIは、いくつかのスコープを定義しています。

  • https://www.googleapis.com/auth/analytics.readonlyデータを表示するには
  • https://www.googleapis.com/auth/analyticsデータを表示および管理する
  • https://www.googleapis.com/auth/analytics.edit管理エンティティを編集するには
  • https://www.googleapis.com/auth/analytics.manage.usersアカウントのユーザーと権限を管理する
  • https://www.googleapis.com/auth/analytics.manage.users.readonlyユーザーとその権限を表示するには
  • https://www.googleapis.com/auth/analytics.provision新しいGoogleAnalyticsアカウントを作成するには

常に最小量の電力を付与するスコープを選択する必要があります。

今はレポートのみを表示したいので、https://www.googleapis.com/auth/analytics.readonlyの代わりにhttps://www.googleapis.com/auth/analytics

Google Analytics Reporting API

注:使用することもできますGoogle Analytics Reporting APIそれらの権限にアクセスします。

これは、Google Analytics APIの縮小版であり、スコープのみを提供しますhttps://www.googleapis.com/auth/analytics.readonlyそしてhttps://www.googleapis.com/auth/analytics

APIはAnalyticsAPIとは少し異なりますが、使用方法と公開するメソッドが異なるため、スキップします。

JWTを作成する

const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes)

リクエストを実行する

このコードを確認してください:

const { google } = require('googleapis')
const scopes = 'https://www.googleapis.com/auth/analytics.readonly'
const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes)

const view_id = ‘XXXXX’

async function getData() { const response = await jwt.authorize() const result = await google.analytics(‘v3’).data.ga.get({ ‘auth’: jwt, ‘ids’: ‘ga:’ + view_id, ‘start-date’: ‘30daysAgo’, ‘end-date’: ‘today’, ‘metrics’: ‘ga:pageviews’ })

console.dir(result) }

getData()

Google Analytics APIへのリクエストを実行して、過去30日間のページビュー数

view_idのIDが含まれています見る。 Google Analyticsコードではなく、ビューIDです。これは、管理パネルからクリックして取得できます。設定を表示アクセスしたいビュー:

The view id

このオブジェクトをリクエストに渡します。

{
  'auth': jwt,
  'ids': 'ga:' + view_id,
  'start-date': '30daysAgo',
  'end-date': 'today',
  'metrics': 'ga:pageviews'
}

jwtオブジェクトとビューIDに加えて、3つのパラメーターがあります。

  • metrics:APIに通知します欲しいもの
  • start-date:レポートの開始日を定義します
  • end-date:レポートの終了日を定義します

このリクエストは非常に単純で、指定された期間に発生したページビューの数を返します。

返される結果は次のようになります。

{
  status: 200,
  statusText: 'OK',
  headers: {...},
  config: {...},
  request: {...},
  data: {
    kind: 'analytics#gaData',
    id: 'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXXXXXXXXXXXXXXXX&metrics=ga:pageviews&start-date=30daysAgo&end-date=today',
    query:  {
      'start-date': '30daysAgo',
      'end-date': 'today',
      ids: 'ga:XXXXXXXXXXXXXXXXXX',
      metrics: [ 'ga:pageviews' ],
      'start-index': 1,
      'max-results': 1000
    },
    itemsPerPage: 1000,
    totalResults: 1,
    selfLink: 'https://www.googleapis.com/analytics/v3/data/ga?ids=ga:XXXXXXXXXXXXXXXXXX&metrics=ga:pageviews&start-date=30daysAgo&end-date=today',
    profileInfo: {
      profileId: 'XXXXXXXXXXXXXXXXXX',
      accountId: 'XXXXXXXXXXXXXXXXXX',
      webPropertyId: 'UA-XXXXXXXXXXX--XX',
      internalWebPropertyId: 'XXXXXXXXXXXXXXXXXX',
      profileName: 'XXXXXXXXXXXXXXXXXX',
      tableId: 'ga:XXXXXXXXXXXXXXXXXX'
    },
    containsSampledData: false,
    columnHeaders: [
      {
        name: 'ga:pageviews',
        columnType: 'METRIC',
        dataType: 'INTEGER'
      }
    ],
    totalsForAllResults: { 'ga:pageviews': '3000' },
    rows: [ [ '114426' ] ] }
}

これであなたはページビューカウントにアクセスすることができますresponse.data.rows[0][0]

指標

この例は単純でした。このデータを要求しました:

{
  'start-date': '30daysAgo',
  'end-date': 'today',
  'metrics': 'ga:pageviews'
}

使用できるデータはたくさんあります。

ザ・ディメンションと指標エクスプローラーすべてのオプションを発見するための素晴らしいツールです。

これらの用語は、Googleアナリティクスの2つの概念です。

寸法都市、国、ページなどの属性、紹介パス、セッション期間です。

指標ユーザー数やセッション数などの定量的な測定値です。

メトリックのいくつかの例:

  • ページビューを取得するga:pageviews
  • ユニークユーザーを獲得するga:users
  • セッションを取得するga:sessions
  • オーガニック検索を取得するga:organicSearches

これらのメトリックを使用していくつかの例を作成しましょう。

共通コード

以下の例で使用される一般的なコードは次のとおりです。スニペットをauthorize()折り返し電話。

'use strict'

const { google } = require(‘googleapis’)

const scopes = https://www.googleapis.com/auth/analytics.readonly const jwt = new google.auth.JWT(process.env.CLIENT_EMAIL, null, process.env.PRIVATE_KEY, scopes)

async function getData() { const defaults = { ‘auth’: jwt, ‘ids’: ‘ga:’ + process.env.VIEW_ID, } const response = await jwt.authorize()

/* custom code goes here, using response */ }

getData()

デフォルトのオブジェクトは、を使用した例で再利用されますスプレッド演算子、JavaScriptでデフォルト値を処理する便利な方法です。

今日のセッション数を取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': 'today',
  'end-date': 'today',
  'metrics': 'ga:sessions'
})

console.dir(result.data.rows[0][0])

有機ソース(検索エンジン)からの今日のセッションの数を取得する

追加しますfiltersプロパティ:

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': 'today',
  'end-date': 'today',
  'metrics': 'ga:sessions',
  'filters': 'ga:medium==organic',
})

昨日のセッション数を取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': 'yesterday',
  'end-date': 'yesterday',
  'metrics': 'ga:sessions'
})

console.dir(result.data.rows[0][0])

過去30日間のセッション数を取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': '30daysAgo',
  'end-date': 'today',
  'metrics': 'ga:sessions'
})

console.dir(result.data.rows[0][0])

過去30日間に使用されたブラウザを取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': '30daysAgo',
  'end-date': 'today',
  'dimensions': 'ga:browser',
  'metrics': 'ga:sessions'
})

console.dir(result.data.rows.sort((a, b) => b[1] - a[1]))

[
[ ‘Chrome’, ‘994’ ],
[ ‘Safari’, ‘548’ ],
[ ‘Firefox’, ‘442’ ],
[ ‘Android Webview’, ‘113’ ],
[ ‘Opera’, ‘56’ ],
[ ‘Safari (in-app)’, ‘41’ ],
[ ‘Edge’, ‘36’ ],
[ ‘Internet Explorer’, ‘4’ ]
]

Chromeを使用している訪問者の数を取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': '30daysAgo',
  'end-date': 'today',
  'dimensions': 'ga:browser',
  'metrics': 'ga:sessions',
  'filters': 'ga:browser==Chrome',
})

console.dir(result.data.rows[0][1])

トラフィックソースごとにセッションを取得する

const result = await google.analytics('v3').data.ga.get({
  ...defaults,
  'start-date': '30daysAgo',
  'end-date': 'today',
  'dimensions': 'ga:source',
  'metrics': 'ga:sessions'
})

console.dir(result.data.rows.sort((a, b) => b[1] - a[1]))

[
[ ‘google’, ‘1343’ ],
[ ‘(direct)’, ‘731’ ],
[ medium.com, ‘624’ ],
[ t.co, ‘987’ ],
[ reddit.com, ‘65’ ]
]

Google Analytics Real Time API

Google Analytics Real Time APIは[2018年5月]プライベートベータ版であり、一般公開されていません。このページを確認してください

私の無料ダウンロードNode.jsハンドブック


その他のノードチュートリアル: