4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

GA4のAPIの使い方

Last updated at Posted at 2022-08-19

はじめに

今までみなさん大変お世話になってきたであろう、「ユニバーサルアナリティクス」が2023年7月1日をもって停止するという話があり...

会社で運営しているサイトもGA4に切り替えたところ、今まで使っていたAPIが使えなくなるという事件が発生しました!!
そして日本語の情報もあまりなく、苦労したので、まとめておきます。

使い方

APIを使えるようにしよう

使用するAPI:Google Analytics Data API (GA4)

認証用のjsonの作成などは、従来のユニバーサルアナリティクスと変わりません。
私は、従来のユニバーサルアナリティクス用で使用したjsonをそのまま使用しました。

公式の手順サイト:はじめてのアナリティクス API

このページの以下の手順をやっておいてください。

composerでライブラリをインストール

GitHub

$ composer require google/analytics-data

PHPのbcmathエクステンションを追加

bcmathというエクステンションがないと使えません。
私もエラー出てしまったのですが、そのときのエラーをメモするのを忘れてしまった。

以下のコマンドで追加されているエクステンションを表示できます。

$ php -m

認証ファイルの環境変数を設定する

$ GOOGLE_APPLICATION_CREDENTIALS="あなたの認証用jsonファイルのパス"

ただ、私はこれだけでは動かなかったので、phpのコード側にもputenvで記載しました。

以下のコマンドで設定されている環境変数の確認ができます。

$ printenv

ソースコード

動作確認はしてないので、エラー出たら自分で直してください。
以下のコードでは、ページパスごとのページビュー数と平均ページ滞在時間を取得しています。

<?php
require 'vendor/autoload.php';

use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
use Google\Analytics\Data\V1beta\Metric;

class SampleClass
{
    protected $client;
    protected $property_id = 'GA4のプロパティID';

    function __construct() {
        //認証処理
        $filePath = 'あなたの認証用jsonファイルのパス';
        putenv("GOOGLE_APPLICATION_CREDENTIALS=$filePath");
        $this->client = new BetaAnalyticsDataClient();
    }

    /* GA4からデータ取ります */
    function getGA4Data()
    {
        $gaData = $this->client->runReport([
            'property' => 'properties/' . $this->property_id,
            // 'limit' => 2000, //取得件数絞れます
            'dateRanges' => [
                new DateRange([
                    'start_date' => '開始日',
                    'end_date' => '終了日',
                ]),
            ],
            'dimensions' => [new Dimension(
                [
                    'name' => 'pagePath',
                ],
            ),
            ],
            'metrics' => [
                new Metric([
                    'name' => 'screenPageViews', //PV数
                ]),
                new Metric([
                    'name' => 'averageSessionDuration', //平均ページ滞在時間(秒)
                ])
            ]
        ]);


        foreach($gaData->getRows() as $row) {
                //ディメンション
                $pageName = $row->getDimensionValues()[0]->getValue();

                //メトリクス
                $metricsValues = $row->getMetricValues();
                $viewCount = $metricsValues[0]->getValue(); //PV数
                $time = $metricsValues[1]->getValue(); //平均ページ滞在時間(秒)
        }
    }

}

APIで使えるディメンションとメトリクス

公式サイト:ディメンション・メトリクス一覧

ユニバーサルアナリティクスのメトリクスとの対応表

私がAPI使っているサイトは、かつてはga:pagePathLevel1で一階層目のページビュー数を取っていたのですが、おそらくGA4にはこのメトリクスがないようです...

参考サイト

GA4で収集したデータをAPIで取得する

他にもいろいろ見た気がするのですが、なんかもう調べすぎてよく分からなくなりました。。
この記事にたどり着いたのは、GA4のAPIで複数のメトリクスの指定方法が分からなかったから...この記事に助けられました。

サンプルコードだと、ディメンションひとつに対して、メトリクスひとつのサンプルしかなくて、いや、メトリクス複数欲しいのですがとなったときに、この記事に出会いました。ありがとうございます。

ちなみに参考サイトに以下の前置きがあったのですが、2022/08/19時点でも、なんら状況は変わっていないように感じました...

現在(2021/12/07時点)、GA4用のAPIはベータ版のみで、日本語での知見はほとんどなく、英語でもあまり見られないのでAPIを利用したい場合、GA4を利用するべきではない。

最後に

実は、サーバーにbcmath入れるのにも苦労した...

ユニバーサルアナリティクス時代のビューIDがなくなって、ビューIDをプロパティIDに変更してしまえば、そのまま使えるかなとか甘い考えでしたが、そんなことはありませんでした。。

...にしても、日本語の記事があまりなくて、英語の記事を結構見たのですが、英語圏でも文句言っている人が多かったので、2023年の7月が心配であります。。

ちなみに、GA4そのものも使っているのですが、従来できたことがすぐにできなかったりして、悩ませられています。。
URLの一階層目ごとのページビュー数を見ようと思ったら、データポータルというのを使うしかないのか...?

データポータルを使うにしても、わざわざ条件文入れないと見れないし、サイトの作り的に一階層目が大量にあるので、スプレッドシートの関数で条件文作ったりしてます。

GA4を使いこなすのは大変なので、これを使いこなれせば、市場的にはかなり有利なんでしょうけど、そんなにやる気はない。。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?