2

Ich versuche, den Wert des Warenkorbs basierend auf Daten im GTM DataLayer E-Commerce-Objekt zu berechnen. Ich bringe das gesamte E-Commerce-Objekt in eine DataLayer-Variable, damit ich in der benutzerdefinierten js-Variable damit arbeiten kann, aber ich kann die rekursive Berechnung nicht ausführen.Google Tag Manager benutzerdefinierte JavaScript-Variable basierend auf E-Commerce DataLayer-Objekt

Hier ist ein Beispiel von Code aus dem Datalayer:

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

Mein Ziel ist es, die Anzahl der Produkte in der Produktpalette zu identifizieren und dann die Berechnung der Menge Produkte Preis * Produkt so oft durchführen, wie erforderlich ist, durch das Whol-Produkt-Array gehen. In diesem Fall wäre es so etwas wie diese:

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

Ich habe versucht, den Code von Simo Ahava's related blogpost ohne Erfolg zu modifizieren. Die Unterschiede zwischen seinem Blogpost und meiner Absicht sind:

  1. Ich muss den Warenkorbwert nicht als E-Commerce Custom Metric festlegen. Ich möchte nur den Wert des Wagens in der benutzerdefinierten js zurückgeben.
  2. Ich möchte nicht das Hinzufügen oder Löschen von Elementen aus dem Warenkorb beinhalten. Stattdessen möchte ich nur den Wert berechnen, wenn das GTM-Ereignis "Kasse" ausgelöst wird, und den Wert der enthaltenen Produkte berechnen.

Vielen Dank im Voraus.

Antwort

1

Da Sie bereits erstellt haben, {{E-Commerce}} Variable, dann ist es sehr einfach, Gesamtbetrag auf der Grundlage des holen Produktmenge und Produktpreis.

Sie haben auf benutzerdefinierte js Variable Order Subtotal dann in die benutzerdefinierte js Box Paste unter Code erstellen

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; 
} 

ich diese Hoffnung wird Ihnen helfen, Sie

+0

dieses Problem zu beheben war genau richtig Danke, Dinesh. Ich änderte das auch, um auch die Produkt-IDs in einer verketteten, durch Kommas getrennten Listenfunktion zu erfassen() { var productList = {{ecommerce}}. var productIds = ''; für (var i = 0; i

1

Diese JS Funktion neueste Datalayer E-Commerce-Ereignis nehmen und Produktsumme berechnen:

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; 
} 
Verwandte Themen