技術的な話題   


Google Analytics の API を使ってアシストコンバージョンをとりたいが、通常のセッション数などを取得できる Core Reporting API にはアシストコンバージョンという指標は無く取得することができない。 Multi-Channel Funnels Reporting API を使うことでその指標は取得できるようになる。がトラップがあり、やりたいことはできなかったので、タイトルが過去形。

なお MCF API のドキュメントにあるサンプルでは Java で書かれているが、言語別のライブラリが持っているインターフェースはおよそ同じなので、読み換えればよい。

Multi-Channel Funnels Reporting API - デベロッパー ガイド  |  アナリティクス Multi-Channel Funnels Reporting API  |  Google Developers

PHP ならこんな具合にして MCF をコールできる。

// セッション準備
session_start();

// API利用のための認証
//==================================================
$client = new \Google_Client();

// クライアントキー、シークレットの設定
// Developer Console で登録すると発行される
$client->setClientId('...');
$client->setClientSecret('...');

// オフラインアクセスを付与するとリフレッシュトークンを使って無期限にアクセスできる
$client->setAccessType('offline');

// 認証画面を都度表示する
$client->setApprovalPrompt('force');

// リダイレクトURLの設定
// Developer Console で設定した値と合わせないとエラーになる
$client->setRedirectUri('.....');

// アクセス権限の設定
$client->addScope([\Google_Service_Analytics::ANALYTICS_READONLY]);


// 認証が通ってくるとcodeがついてくるのでコレを利用して認証を通す
if (!empty($_GET['code'])) {
    unset($_SESSION['refresh_token']);
    $client->fetchAccessTokenWithAuthCode($_GET['code']);
    $_SESSION['refresh_token'] = $client->getRefreshToken();

} else {

    // リフレッシュトークンがなければ認証URLに飛ばす
    // とりあえず試すならセッションから読み込むと良い。
    if (empty($_SESSION['refresh_token'])) {
        header('Location: ' . $client->createAuthUrl());
        exit;
    }

    // リフレッシュトークンで認証する
    $client->refreshToken($_SESSION['refresh_token']);
}


// Google Analytics とのやり取りするオブジェクト準備
//==================================================
$analytics = new \Google_Service_Analytics($client);


// MCF API を実行する
//==================================================
$gaRequestResult = $analytics->data_mcf->get(
    // プロファイルID
    'ga:......',

    // 開始日
    '30daysAgo',
    // 終了日
    'yesterday',

    // 取得するメトリクス
    'mcf:assistedConversions',

    // 追加のオプション
    [
        'dimensions' => 'mcf:source',
        'filters' => 'mcf:source=@.',
    ]
);


// 結果確認
//==================================================
var_dump($gaRequestResult);

この例だと、流入元別のアシストコンバージョンを30日前から昨日まで範囲で取得する。また流入元の値に "." が含まれていることを条件とする。 流入元とは言うが (direct) のような値も入ってきて厄介。そこで「"." が含まれていること」にすればドメインが付いているものだけ抜けるという仕組み。

Google Developer Console で、このあたりから API 登録をすると動かせるようになる。

https://console.cloud.google.com/apis/dashboard

しかし、実はこの MCF API にはトラップがある。それはディメンションの設定にある。

Google Analytics の画面上からはデバイス別のアシストコンバージョンを確認することができるが API からはこれを確認するすべはない。ドキュメントを見ても MCF API のディメンションにはデバイスの話はない。

ディメンションと指標のリファレンス  |  アナリティクス Multi-Channel Funnels Reporting API  |  Google Developers

また MCF API を呼ぶときにディメンションに Core Reporting API の値を設定してもエラーになってしまう。逆に Core Reporting API を呼び出すときに MCF API のもの(アシストコンバージョンなど)を設定してもエラーになる。

ちなみに Core Reporting API で使える指標はここ。

Dimensions & Metrics Explorer  |  アナリティクス Reporting API v4  |  Google Developers

まあ。アシストコンバージョンそんな重要じゃねーからよくね、って話なのかもしれない。