先日、前々から言われていたユニバーサル アナリティクスの終了の日がついにアナウンスされました。
「うちもいよいよGA4移行か・・・」となったわけです。
ユニバーサル アナリティクスのしかもanalytics.js版でクライアントIDの取得を行っているのですが、GA4でも取得できるのかなと思って探していたら様々な取得パターンをまとめた記事がありました(神記事!)。
【全8パターン】GoogleアナリティクスでクライアントIDを取得する方法の全て
最初、GA4の計測ができなかったのもあり、念の為、gtag.jsとanalytics.jsの両方に対応した書き方にして、GAタグを戻しても使えるようにしました。
その際のコードは以下のようになります。
非同期処理を行なっているので、Promiseを返すようにしています。
gtagが存在する時はgtag.js版のクライアウトID取得の処理、gtagが存在せずgaが存在する時はanalytics.js版のクライアントID取得の処理、それ以外は何もしないとしておけば、とりあえずはエラーにならずに取得できました。
getClientId = function () {
return new Promise(function (resolve) {
var data = null;
if (typeof gtag !== 'undefined') {
console.log('gtag detect');
gtag('get', '{gtag版のトラッキングID}', 'client_id', function (clientId) {
data = {
success: true,
id: clientId,
};
resolve(data);
});
}
else if (typeof ga !== 'undefined') {
console.log('ga detect');
ga(function (tracker) {
data = {
success: true,
id: tracker.get('clientId'),
};
resolve(data);
});
} else {
resolve({ success: false, id: '' });
}
});
};
クライアントIDがそもそも取得できないユーザーもいるので、クライアントIDが取得できなくても、成功とみなすようになっています。
これでgtag.jsでもクライアントIDが取得できるようになりました。
めでたし、めでたし。