Avance.Lab

技術紹介

Googleアナリティクス ~UAからGA4へ移行し、PHPでデータ取得~

公開日:2023.10.27 更新日:2023.10.27

tag: APIクラウド

こんにちは、WwWです。

Googleアナリティクスが、ユニバーサルアナリティクス(UA)からGoogleアナリティクス4プロパティ(GA4)へ2023年7月1日に切り替わっていたことを、恥ずかしながらここ最近知りまして、慌てて対応をしたので紹介したいと思います。
(今までUAでデータ取得していた処理は、データ値が0固定または何も取得できなかったり、未来の日付で取得できたり等、色々とおかしくなってしまっていました)

※引用元※
[UA]ユニバーサルアナリティクスはGoogleアナリティクス4に置き換わりました (Googleアナリティクスヘルプページ)

使用したサーバ環境は下記になります。

OSCentOS 7
※サポート期限が2024年6月30日までなので、こちらもOS移行に気を付けましょう!
使用言語PHP7.4
※APIを使用するためにはPHP7.4以上である必要がある
使用APIGoogle Analytics Data API

Googleコンソールの設定

既存のUAを使用したプロジェクトに対して、GA4の設定を新たに追加する方法になります。

1. GA4プロパティ作成

①Googleアナリティクスにログインする
http://www.google.com/analytics

②ログイン後、左下メニューの[管理]をクリックし、
 [対象のアカウント]と[対象のUAプロパティ]を選択して、
 [GA4 設定アシスタント]をクリックする

1. ②画像

③GA4プロパティが自動作成されているか確認する。(接続済みであればOK)
 ※GA4プロパティへ移行できていないUAプロパティには、GA4プロパティが自動作成されている模様です

1. ③画像

作成されていない場合は、画面の案内に従ってGA4プロパティを作成してください。

2. API設定

2-1. Google Analytics Data API 有効化

①Google Cloudにログインして、[コンソール]をクリックする
https://cloud.google.com/apis?hl=ja

2-1. ①画像

②[対象プロジェクト]を選択してから、左メニューの[APIとサービス > 有効なAPIとサービス]をクリックする

2-1. ②画像

③[APIとサービスの有効化]をクリックした後、表示された検索窓に”Analytics”と入力してEnterキーを押す

④検索結果一覧より、[Google Analytics Data API]をクリックした後、[有効にする]ボタンをクリックする

2-2. サービスアカウントの確認

①引き続き、Google Cloudコンソールの左メニューより[APIとサービス > 認証情報]をクリックする

2-2. ①画像

②サービスアカウントエリアに既にUAで使用しているサービスアカウントがあるため、[メールアドレス]をメモしておく
 ※UAで使用していた認証情報をGA4でそのまま使用できます

2-2. ②画像

2-3. サービスアカウント権限設定

①Googleアナリティクスにログインする
http://www.google.com/analytics

②左下メニューの[管理]をクリックし、
 [対象のアカウント]と[対象のGA4プロパティ]を選択して、
 [プロパティのアクセス管理]をクリックする

2-3.②画像

③画面右上の[+]ボタンをクリックすると出てくるリストより、[ユーザーを追加]を選択する

2-3.③画像

④”2-2. ②”でメモした[メールアドレス]を入力し、[新規ユーザーにメールで通知する]のチェックを外してから、
 画面右上の[追加]ボタンをクリックする

2-3.④画像

2-4. プロパティIDの確認

①引き続き、Googleアナリティクスコンソールより、[プロパティ設定]をクリックする

2-4.①画像

②表示される[プロパティID]をメモしておく
 ※APIからデータを取得するときに使用します

2-4.②画像

サーバの設定(APIでデータ取得)

Google Analytics Data API を使用して、PHPでデータを取得できるようにします。

1. 環境インストール

①Googleパッケージをインストールする
【注意】PHP7.4以上でない場合はインストールに失敗するので、PHP7.4以上にアップデートしてから再度実行するようにしてください

composer require google/analytics-data

②PHPのbcmathパッケージがインストールされていない場合は、このパッケージもインストールしてください

yum install --enablerepo=remi,remi-php74 -y php-bcmath

※PHP7.4の場合のコマンド

2. PHPソースコードを作成

環境が整ったので、GA4からGoogle Analytics Data API でデータを取得するPHPソースコードを用意しましょう。
下記のサンプルは、”2023年9月”の”日付”、”国”、”地域”、”都市”毎の”PV数”と”セッション数”を取得して、結果を表示します。
※認証JOSNファイルパスとプロパティIDは環境に合わせて設定してください

<?php

require 'vendor/autoload.php';
// Google Analytics Data API
use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;
use Google\Analytics\Data\V1beta\OrderBy;
use Google\Analytics\Data\V1beta\OrderBy\DimensionOrderBy;

// Googleサービスアカウント認証
$credentials_json = '/xxx/xxxxxxxxx.json'; // UAで使用していた認証用JOSNファイルパスを指定

// プロパティID
$property_id = 'xxxxxxxxx'; // メモしたプロパティIDを指定

// Googleアナリティクスのデータを取得するAPIリクエスト
$client = new BetaAnalyticsDataClient([
    'credentials' => $credentials_json,
]);
$response = $client->runReport([
    //--------------------------
    // プロパティIDの指定
    //--------------------------
    'property' => 'properties/' . $property_id,
    //--------------------------
    // 期間の指定
    //--------------------------
    'dateRanges' => [
        new DateRange([
            'start_date' => '2023-09-01',
            'end_date' => '2023-09-30',
        ]),
    ],
    //--------------------------
    // ディメンションの指定
    //--------------------------
    'dimensions' => [
        new Dimension([
            'name' => 'date',    // 日付
        ]),
        new Dimension([
            'name' => 'country', // 国
        ]),
        new Dimension([
            'name' => 'region',  // 地域
        ]),
        new Dimension([
            'name' => 'city',    // 都市
        ]),
    ],
    //--------------------------
    // 指標の指定
    //--------------------------
    'metrics' => [
        new Metric([
            'name' => 'screenPageViews', // PV数
        ]),
        new Metric([
            'name' => 'sessions',        // セッション数
        ]),
    ],
    //--------------------------
    // ソート順の指定
    //--------------------------
    'orderBys' => [
        new OrderBy([
            'dimension' => new OrderBy\DimensionOrderBy([
                'dimension_name' => 'date', // 日付でソート
            ]),
            'desc' => false,    // false:昇順, true:降順
        ]),
    ],
]);

// 取得結果表示
foreach ($response->getRows() as $row) {
    // ディメンション(dimension)
    print 'date: ' . $row->getDimensionValues()[0]->getValue()
        . ', country: ' . $row->getDimensionValues()[1]->getValue()
        . ', region: ' . $row->getDimensionValues()[2]->getValue()
        . ', city: ' . $row->getDimensionValues()[3]->getValue()
        . PHP_EOL;

    // 指標(metric)
    print ' --> screenPageViews: ' . $row->getMetricValues()[0]->getValue()
        . ', sessions: ' . $row->getMetricValues()[1]->getValue()
        . PHP_EOL;
}

?>

ディメンション(dimension)と指標(metric)は公式サイトを参考して必要なものを設定します。
https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema

3. 実行してデータ取得

作成したPHPファイルを実行してみましょう。

php get_ga4_data.php
date: 20230901, country: Japan, region: Tokyo, city: (not set)
 --> screenPageViews: 101, sessions: 49
date: 20230901, country: Japan, region: Shizuoka, city: Hamamatsu
 --> screenPageViews: 87, sessions: 71
date: 20230901, country: Japan, region: Aichi, city: Nagoya
 --> screenPageViews: 33, sessions: 22
date: 20230901, country: South Korea, region: Busan, city: Busan
 --> screenPageViews: 8, sessions: 8
date: 20230901, country: Japan, region: Hokkaido, city: Muroran
 --> screenPageViews: 1, sessions: 1
 :
 :(中略)
 :
date: 20230930, country: Japan, region: Osaka, city: Osaka
 --> screenPageViews: 91, sessions: 86
date: 20230930, country: Japan, region: Tokyo, city: (not set)
 --> screenPageViews: 91, sessions: 85
date: 20230930, country: Japan, region: Kyoto, city: Miyazu
 --> screenPageViews: 55, sessions: 51
date: 20230930, country: Japan, region: Shizuoka, city: Hamamatsu
 --> screenPageViews: 13, sessions: 13
date: 20230930, country: Japan, region: Kanagawa, city: Odawara
 --> screenPageViews: 2, sessions: 2

指定したデータをGA4から取得することができました!

まとめ

Googleアナリティクスのデータ取得をUAからGA4に移行し、GA4からデータを取得する手順をまとめてみました。
まだ移行未対応という人は是非参考にしてみてください。

また、データ取得サンプルコードの設定値を変更すると様々なデータを取得することができるので、
必要に応じて変更してみてください。

WwW

ハードを設定したり、Web開発したり、ラズパイ触ったり。

青色が好き。

関連記事