JavaScriptの勉強がてら Google タグマネージャーを使い GA4 の計測実装を色々と試してみるシリーズです(不定期)。
なぜ GA4 で曜日を計測したくなったのか
GA4 のデータコネクタで接続した Looker Studio ではディメンションに「曜日」や「曜日の名前」があります。
しかし、 GA4 では前述の「曜日」や「曜日の名前」のような曜日に関するディメンションは探索レポートでも存在しません。
「平日と休日でユーザー数が平均で多いのはどちらだろう?」とか「曜日別でPV数の多い時間帯はどこだろう?」とか考えついても、 GA4 の探索レポートでサクッと集計できません。不便ですね。
そこで Google タグマネージャーのカスタムJavaScriptを使って、 GA4 の各イベント内にパラメータで曜日を計測させてみます。
JavaScriptでタイムゾーンから曜日を判別する
Google タグマネージャー内で設定したJavaScriptは以下です。
function() {
var tz = -9;
var now = new Date(Date.now() - (tz * 60 - new Date().getTimezoneOffset()) * 60000);
var dayOfWeekList = [
"Sunday",
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday"
];
return dayOfWeekList[now.getDay()];
}
JavaScriptの内容
- 基準となるタイムゾーンを「-9時間」に設定
var tz = -9;
実行している環境のローカル時間がUTCから何分ずれているかを取得し、1分間をミリ秒(1000ms × 60s)に変換
var now = new Date(Date.now() - (tz * 60 - new Date().getTimezoneOffset()) * 60000);
曜日の名前を配列として定義
var dayOfWeekList = [
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"
];
JavaScriptの getDay() メソッドは、日曜日を0、土曜日を6とする数値を返す。
この配列の順序と一致するようになる。
日時オブジェクトから曜日番号を取り出し、配列から名前を抽出して返す
return dayOfWeekList[now.getDay()];
数値をインデックスとして、"Monday" などの文字列を返す。
GTMで GA4 の計測実装する
- 変数にカスタムJavaScriptで設定
- GA4 のイベントにパラメータの値として作成したカスタムJavaScript変数を設定









