3

状況

一部の Web サイトでは、拡張 e コマース トラッキングが完全に実装されています。これは組み込み機能の拡張 e コマースによって行われます - dataLayer を使用します。

例:

var ecommercObject = {
      'ecommerce': {
        'purchase': {
          'actionField': {
            'id': 'T12345',                         // Transaction ID. Required for purchases and refunds.
            'affiliation': 'Online Store',
            'revenue': '35.43',                     // Total transaction value (incl. tax and shipping)
            'tax':'4.90',
            'shipping': '5.99',
            'coupon': 'SUMMER_SALE'
          },
          'products': [{                            // List of productFieldObjects.
            'name': 'Triblend Android T-Shirt',     // Name or ID is required.
            'id': '12345',
            'price': '15.25',
            'brand': 'Google',
            'category': 'Apparel',
            'variant': 'Gray',
            'quantity': 1,
            'coupon': ''                            // Optional fields may be omitted or set to empty string.
           },
           {
            'name': 'Donut Friday Scented T-Shirt',
            'id': '67890',
            'price': '33.75',
            'brand': 'Google',
            'category': 'Apparel',
            'variant': 'Black',
            'quantity': 1
           }]
        }
      }
    }

望ましい動作

拡張 e コマースの実装を別の分析システムに再利用したいと考えています。

だから私は GTM のマクロ/変数が必要です。これは強化された e コマース JavaScritp オブジェクトを返します。

現在の試み

カスタム JS: E コマース オブジェクト

コンソールでこのマクロを試してみましたが、GTM では機能しませんでした。

(function(){

myStringArray = window.dataLayer;

var arrayLength = myStringArray.length;
for (var i = 0; i < arrayLength; i++) {

  if(myStringArray[i].ecommerce){
    return myStringArray[i];
  }

}
return false;

})()

DataLayer 変数: ECOMMERCE OBJECT

マクロ型 DataLayer を dataLayer 変数名「ecommerce」で試してみました。無効。

問題

カスタムタグでこのコードを使用すると:

var eecom = {{ECOMMERCE OBJECT}}
console.dir(eecom);

空文字列を返します。

質問

拡張 e コマース オブジェクトが dataLayer に表示されたときにそれを取得する一般的な解決策はありますか?

4

1 に答える 1

1

Google タグ マネージャーのマクロ / 変数

GTM では、JavaScript マクロは JS オブジェクトを返すことができません。Niether JS 変数は JS オブジェクトを返すことができません。

最後に、このマクロを TAG に組み込むと、機能します。最終的な解決策は次のようになります。

var dl = window.dataLayer;
var eecom = "";
var al = dl.length;
for (var i = 0; i < al; i++) {
  if(dl[i].ecommerce){      
    eecom = dl[i].ecommerce;
    break;
  }
} 
于 2015-10-06T14:13:36.260 に答える