2

我試圖根據GTM數據層電子商務對象中包含的數據計算購物車的值。我將整個電子商務對象放入一個數據層變量中,以便我可以在自定義js變量中使用它,但是我無法進行遞歸計算。基於電子商務數據層對象的Google跟蹤代碼管理器自定義JavaScript變量

下面是來自數據層的代碼的示例:

{ 
    "event": "checkout", 
    "ecommerce": { 
    "checkout": { 
     "products": [ 
     { 
      "name": "coat", 
      "id": "14M", 
      "quantity": 1, 
      "price": "100.00" 
     }, 
     { 
      "name": "pants", 
      "id": "12L", 
      "quantity": 3, 
      "price": "50.00" 
     } 
     ] 
    } 
    } 
}` 

我的目標是識別產品數量的產品陣列中,然後執行的產品價格*產物量計算多次需要通過whol產品數組。在這種情況下,這將是這樣的:

(1 * 100)+(3 * 50)= 250。

我試圖從Simo Ahava's related blogpost修改代碼沒有成功。他的博文和我的意圖之間的差異是:

  1. 我不需要將購物車價值設置爲電子商務自定義指標。我只想在自定義js中返回購物車的價值。
  2. 我不希望這涉及到添加或刪除購物車中的物品。相反,我只是想要在觸發GTM事件「checkout」時計算該值,並計算包含的產品的值。

在此先感謝。

回答

1

既然你已經創建了{{電子商務}}變量,那麼它是非常容易的基礎上提取總額產品數量和產品價格。

你必須創建自定義JS變量訂單小計 然後在自定義的JS箱 粘貼下面的代碼

function(){ 
    var productList={{ecommerce}}.checkout.products; 
    var totalAmount=0; 
    for(var i=0;i<productList.length;i++) 
    { 
    totalAmount+=(productList[i].quantity)*(parseFloat(productList[i].price)); 
    } 
    return totalAmount; 
} 

我希望這將幫助您解決您發出

+0

這點上,謝謝Dinesh。我也對此進行了修改,以便在串聯的,以逗號分隔的列表函數()中獲取產品標識(){product_list {{ecommerce}}。 var productIds =''; (var i = 0; i

1

這個js功能將最新的數據層的電子商務活動,並計算乘積之和:

function productSum() { 
    var result = 0; 
    var ecommerceDataLayers = dataLayer.filter(function(e){return e.event == "checkout";}); 
    if (ecommerceDataLayers.length) 
    { 
     var lastEcommerce = ecommerceDataLayers[ecommerceDataLayers.length-1]; 
     for(i=0;i<lastEcommerce.ecommerce.checkout.products.length;i++) { 
      var product = lastEcommerce.ecommerce.checkout.products[i]; 
      result += product.quantity*parseFloat(product.price); 
     } 
    } 
    return result; 
} 
相關問題