SPAサイトでGTMのカスタム変数がありえない値になっているものがあり、調査したところオブジェクトや配列の値の更新時に注意点があることが分かりました。
Google Tag Manager(GTM)でカスタムのページ変数を定義する方法の1つです。
JavaScript変数などより比較的容易に設定できます。
dataLayer.push({'Data Layer Name': 'value'}).
オブジェクト・配列を変更する場合、子要素の値はクリアされずに保持されたままになるため、値のクリアを先に実行する必要があります。
// data1の設定
dataLayer.push({ data1: { a: ‘value1’, b: ‘value2’ } });
上記の設定後にdata1.b を使用せずに、data1.aとdata1.cを使用したい時に、下記のように設定し直した場合、
// data1の更新
dataLayer.push({ data1: { a: ‘value3’, c: ‘value4’ } });
data1の値は、 { a: ‘value3’, b: ‘value2’ , c: ‘value4’ } となり、data1.aの値は上書きされますが、data1.bの値は保持されたままになります。
オブジェクトの一部だけ更新したい場合は重宝しますが、全体を更新したい場合は値のクリアを行う必要があります。
// data1の更新の前にクリア処理を入れる
dataLayer.push({ data1: null }); // data1にnullを設定する
dataLayer.push({ data1: { a: ‘value3’, c: ‘value4’ } });
// data1 => { a: ‘value3’, c: ‘value4’ }
配列も同様で、配列長が短くなる場合に注意が必要です。
// arr1の設定
dataLayer.push({ arr1: [100, 200, 300] });
// arr1の更新
dataLayer.push({ arr1: [101, 201] });
// arr1 => [101, 201, 300]
// arr1の設定
dataLayer.push({ arr1: [100, 200, 300] });
dataLayer.push({ arr1: null }); // arr1にnullを設定する
// arr1の更新
dataLayer.push({ arr1: [101, 201] });
// arr1 => [101, 201]
データレイヤー変数にnullとundedinedを指定した場合の違いは、以下のようになります。
null:変数の値がnullになる
undefined:変数が削除される
タグマネージャーヘルプ:ウェブ用のユーザー定義変数タイプ#データレイヤー https://support.google.com/tagmanager/answer/7683362#data_layer
Implement DigitalではGoogle Tag Manger/Google Analyticsの導入・実装・運用を支援するサービスを提供しています。
ご興味がありましたらお問い合わせください。