Google Analyticsのデータを取得してみた

こんにちは。AG-Boost事業部開発部の宇野です。現在AG-Boostというサービスのフロント、バックエンドの開発を行っております。最近Google Analytics(以下GA)のデータを取得した時のことについて紹介していきます。

事前準備

まずGoogle APIにアクセスするための認証情報を取得する必要があるのでその作業から始めていきます。

Google Cloud Platformでプロジェクトを作成する

以下のリンクから新規プロジェクトを作成します。
https://console.developers.google.com/projectcreate

f:id:so-technologies:20211004100126p:plain

Analytics APIを有効化する。

以下のリンクから検索をかけGoogle Analytics Reporting APIを探します。
https://console.developers.google.com/apis/library

f:id:so-technologies:20211004101929p:plain


Google Analytics Reporting APIを有効にします。

f:id:so-technologies:20211004103608p:plain


有効化出来たら「認証情報を作成」をクリックします。

f:id:so-technologies:20211004105437p:plain

認証情報の作成

使用するAPIは「Analytics Reporting API」を選択します。次に「アプリケーションデータ」にチェック。最後は今回使用しないので「いいえ、使用していません」にチェックを入れます。

f:id:so-technologies:20211004110424p:plain


「サービスアカウント名」は適当に決めます。「役割」は「プロジェクト」の中の「閲覧者」を選択します。「サービスアカウント ID」は後で必要になるのでメモしておいてください。「キーのタイプ」は「JSON」を選択します。
自動的にJSON ファイルがダウンロードされます。こちらは後で使います。

GAの閲覧権限を与える

対象のWebサイトのGAにて権限を付与します。GAの「管理」→「ビュー」の中にある「ビューの設定」を表示します。こちらにある「ビューID」はあとで使用するのでメモしておきます。

f:id:so-technologies:20211004115530p:plain
f:id:so-technologies:20211004115910p:plain


次に「ビューのアクセス管理」を表示し、先ほどメモしたサービスアカウント ID (example@xxxxxx-xxxxxx.iam.gserviceaccount.com のようなもの) を追加します。

f:id:so-technologies:20211004120523p:plain

以上で事前準備は終わりです。

実装

今回はGAのユーザー概要(ユーザー、新規ユーザー、セッション、ユーザーあたりのセッション、ページビュー、ページ/セッション、平均セッション時間、直帰率)を取得してみます。

const { GoogleApis } = require('googleapis');
const google = new GoogleApis();
const viewId = 'xxxxxxxxx'; // GAのビュー設定に記載されていたユーザーID

(async () => {
  const client = await google.auth.getClient({
    keyFile: 'xxxxxxxxxxx',  // ダウンロードしたJSONファイル
    scopes: 'https://www.googleapis.com/auth/analytics.readonly'
  });

  const analyticsreporting = google.analyticsreporting({
    version: 'v4',
    auth: client
  });

  const userSummaryReportData = await analyticsreporting.reports.batchGet({
    requestBody: {
      reportRequests: [
        {
          dateRanges: [
            {
              startDate: 'xxxx-xx-xx',  // 取得し始める日
              endDate: 'xxxx-xx-xx'  // 取得し終わる日
            }
          ],
          viewId: viewId,
          metrics: [
            {
              expression: 'ga:users' //  ユーザー数
            },
            {
              expression: 'ga:newUsers' // 新規ユーザー数
            },
            {
              expression: 'ga:sessions' // セッション数
            },
            {
              expression: 'ga:sessionsPerUser' // ユーザーあたりのセッション数
            },
            {
              expression: 'ga:pageviews' // ページビュー数
            },
            {
              expression: 'ga:pageviewsPerSession' // ページ/セッション
            },
            {
              expression: 'ga:avgSessionDuration' // 平均セッション時間
            },
            {
              expression: 'ga:bounceRate' // 直帰率
            },
          ],
        }
      ]
    }
  });
  const resultList = userSummaryReportData.data.reports[0].data.rows[0].metrics[0].values;
  console.log(resultList);
  // ['10', '2', '30', '2', '50', '5', '240', '10']みたいな感じで取得できます。

おわりに

今回はGAのユーザー概要のデータを取得するところまで書いてみました。
この取得したデータはこのあとslackに通知し可視化出来るようにしました。
metricsは他にも色々ありこちらのサイトで探しました。
ga-dev-tools.web.app

同じことをやろうと思っている方に少しでも参考になれば幸いです。