▼調べ方
GTMのプレビューURLにて開いたページであれば検証ツールにて変数やトリガー、タグがどのように設定されてるかを確認することが出来る。
検証ツールのSourcesタブのwww.googletagmanger.com
配下のJSファイルを開く(debugという文字列がある方を選択)
▼データ構造を調べる
data
というオブジェクトの中にresource
というキーがあり、その中に変数とタグとトリガー条件などが格納されていそうだ
それぞれについて見ていく。
➀変数
data>resource>macros
というオブジェクトの階層になっている。
macros
に変数が入っている。ここには組み込み変数とユーザ定義変数が格納されていそうだ。GTMにて追加した変数のみが表示される
- function名として変数タイプを表す文字列が書かれている
- 例えば、__jsmであればカスタムJS変数
ex)カスタムJS変数
"function": "__jsm",
"instance_name": "タイトル取得変数",
"vtp_javascript": ["template", "(function(){return document.title})();"]
➁タグ
data>resource>tags
tags
にタグが入っている。タグの種類ごとに持つキーの種類が違いそうだ。一つ一つのタグにはIDが振られている。instance_nameにはタグ名が入っている。
- function
- __googletag
- Googleタグ
- _gaawe
- GA4イベントタグ
- __html
- カスタムHTML
- __googletag
ex)GA4イベントタグ
"function": "__gaawe",
"instance_name": "falseClickタグ",
"metadata": ["map"],
"once_per_event": true,
"vtp_sendEcommerceData": false,
"vtp_enhancedUserId": false,
"vtp_eventName": "falseClisk",
"vtp_measurementIdOverride": "G-XXXXXXX",
"vtp_enableUserProperties": true,
"vtp_enableMoreSettingsOption": true,
"vtp_enableEuid": true,
"vtp_migratedToV2": true,
"vtp_demoV2": false,
"tag_id": 28
③トリガー条件
data>resource>predicates
おそらくトリガーが入っている。トリガーの中でもその中の発生条件単位で格納されている。一つのトリガーに複数のドメインを条件として追加したとすると、ドメインごとにデータが格納される仕組みのようだ
- functionにはマッチタイプが入っている
- __eq
- 完全一致
- __re
- 正規表現に一致
- cn
- 含む
- __eq
ex)カスタムイベントトリガー
"function": "_eq",
"arg0": ["macro", 0],
"arg1": "consent_update"
これは、0番目の変数が"consent_update"とに完全一致するという条件となる。
0番目の変数はmacrosオブジェクト配列の0番目を確認すると以下のようになる。
"function": "__e",
"instance_name": "_event"
イベント名を取得する変数であると推測出来る。
まとめると、このトリガーはイベント名がが"consent_update"とに完全一致ものに発火するものであると理解できる
▼分かったこと
GTM UIにて設定した変数・タグ・トリガーはオブジェクトとして格納されている。
以下のようにオブジェクトのキーが対応する。補足説明についても記載する。
- 変数
- macros
- 組み込み変数とユーザ定義変数の両方が入っている
- macros
- タグ
- tags
- タグの種類ごとに持つ属性が異なる
- tags
- トリガー条件
- predicates
- トリガー単位ではなく、トリガーの詳細条件という単位で格納される
- macrosに格納されたものを呼び出している
- predicates
また、今回調査をしなかったが推測出来たもの、見つけたものについても述べる
- rulesにトリガーが格納されており、if文とaddを駆使してそのトリガーを発動させている。
- runtime属性
- 何が行われているか分からなかった
- entities
- よくわからなかったが複数キーに対してtrueという値を設定していた
- permissions
- あらゆるものに対しての許可設定を行っている箇所だと推測する
理解不能な箇所も多いが、GTMが裏側で行っている処理が少しは見えてきた気がする。