0

尝试通过我们的电子商务商店设置 GA 并遇到实际产品项目根本没有发布到 GA 的问题。总价运行良好,但没有任何项目数据通过。

使用 Chrome 中的 Google Analytics 调试器,似乎正在发生这种情况,因为变量返回的值位于单独的行上。当它换行时,谷歌认为它没有价值,至少看起来是这样。

我附上了调试器窗口的屏幕以显示换行符。

在此处输入图像描述

在查看代码之前,请注意,为了获得价值、产品和定价,我必须遍历电子商务感谢页面上的表格,因为我们使用的电子商务系统没有任何 API...

这是以测试顺序导出的表的代码。

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript">
var purchaseTotal;
var orderID = "[[S120:cart:orderId]]";
var productQty = new Array(); //quantity of product
var productName = new Array(); //name of product
var productValue = new Array(); //price of product
var productRows;
var a = 0; //used to assign array values

var _gaq = _gaq || []; //start _gaq to use globaly

$(function(){

    function getQuerystring(key, default_){
      if (default_==null) default_=""; 
      key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
      var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
      var qs = regex.exec(window.location.href);
      if(qs == null)
        return default_;
      else
        return qs[1];
    }

    var isThankyou = getQuerystring('CONFIRMATION');

    if(getQuerystring('CONFIRMATION') == 'true'){


    purchaseTotal = $("table.ShoppingCart tr:last-child").children("td:last-child").text();
    purchaseTotal = purchaseTotal.replace('$',''); //removes dollar sign from text for GA use
    purchaseTotal = purchaseTotal.replace(/\s+/g,""); //removes all extra spaces
    console.log("Total: "+ purchaseTotal);

    var rows = $("table.ShoppingCart tr").length;
    console.log("Rows: " + rows);

    //start going through the rows
    for(var i = 0; i <= rows; i++){


        var cells = $("table.ShoppingCart tr").eq(i).children("td").length;
        var cell = $("table.ShoppingCart tr").eq(i).children("td");
        //if there 3 cells we're in business, it's a product
        if(cells == 3){
            //for every row, go through the cells if the length of cells in that row are 3
            for(var k = 0; k < cells; k++){
                if(k == 0){
                    //this is the quantity column, let's see how much was ordered
                    productQty[a] = $(cell).eq(k).text();
                    productQty[a] = productQty[a].replace(/\s+/g," ");
                    console.log("QTY: "+ productQty[a]);
                }
                if(k == 1){
                    //this is the product name column, what's the name?
                    productName[a] = $(cell).eq(k).text();
                    productName[a] = productName[a].replace(/\s+/g," ");
                    console.log("Name: "+ productName[a]);
                }
                if(k == 2){
                    //this is the price 
                    productValue[a] = $(cell).eq(k).text();
                    productValue[a] = productValue[a].replace("$","");
                    productValue[a] = productValue[a].replace(/\s+/g," ");
                    console.log("Value: "+ productValue[a]);
                    a++;
                }
            }
        }
        //console.log("END i loop: "+ i);
    }

    productRows = productQty.length;

    ecommerceGACode(); // launch eccomerce GA code

  }//endif
  else{
      noEcommerceGA();

  }//end else

});

function ecommerceGACode(){
        //Google Analytics Code
    console.log("ThankYouPage GA launched");
    _gaq.push(['_setAccount', 'UA-2167264-1']);
    _gaq.push(['_setDomainName', '.convio.net']);
    _gaq.push(['_setSiteSpeedSampleRate', 5]);
        if (CONVIO.referrer.length != 0) {
            _gaq.push(['_setReferrerOverride',CONVIO.referrer]);      
        }
    _gaq.push(['_trackPageview']);

    _gaq.push(['_addTrans',
      orderID,           // order ID - required
      'ECommerce Store',  // affiliation or store name
      purchaseTotal,          // total - required
      '',           // tax
      '',              // shipping
      '',       // city
      '',     // state or province
      ''             // country
    ]);

  //loop through our array's and insert the values!
  for(var i = 0; i < productRows; i++){
      console.log("QTY: "+ productQty[i]);
      console.log("Name: "+ productName[i]);
      console.log("Value: "+ productValue[i]);

      var name = productName[i];
      var qty = productQty[i];
      var price = productValue[i];


     _gaq.push(['_addItem',
      orderID,           // order ID - required
      'Ecommerce',           // SKU/code - required
      ''+name+'',        // product name
      '',   // category or variation
      ''+price+'',          // unit price - required
      ''+qty+''               // quantity - required
    ]);

  }

    _gaq.push(['_trackTrans']); //submits transaction to the Analytics servers


      var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);

} // Ecommerce GA Code

function noEcommerceGA(){

      console.log("Normal GA Launched");
      _gaq.push(['_setAccount', 'UA-2167264-1']);
      _gaq.push(['_setDomainName', '.convio.net']);
      _gaq.push(['_setAllowLinker', true]);
      _gaq.push(['_setSiteSpeedSampleRate', 5]);
        if (CONVIO.referrer.length != 0) {
            _gaq.push(['_setReferrerOverride',CONVIO.referrer]);      
        }
      _gaq.push(['_trackPageview']);


        var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
        ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
        var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);

} // no Ecommerce Code
</script>

<table class="ShoppingCart" cellpadding="5" border="1" style="border-collapse: collapse;" width="100%">
  <tbody>
    <tr class="ShoppingCartHeadings">
      <th width="10%"> <p>Quantity</p>
      </th>
      <th width="70%"> <p>Item Name</p>
      </th>
      <th width="20%"> <p>Total Price</p>
      </th>
    </tr>
    <tr valign="top" class="ShoppingCartRow0">
      <td><p>1</p></td>
      <td><p> <span class="CartItemName">Interview with a Terrorist</span> ($5.00 each) </p></td>
      <td align="right"><p>$5.00</p></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><p><strong>Total Price of Items:</strong></p></td>
      <td align="right"><p><strong>$5.00</strong></p></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><p> <strong>Shipping Charges: </strong> </p></td>
      <td align="right"><p><strong>$5.00</strong></p></td>
    </tr>
    <tr>
      <td colspan="2" align="right"><p><strong>Total: </strong></p></td>
      <td align="right"><p><strong>$10.00</strong></p></td>
    </tr>
  </tbody>
</table>

正如您可能看到的那样,我什至尝试从变量值中删除多余的空格。

在我的控制台测试中,所有内容都是一个没有换行符的单行字符串,所以我不知道到底发生了什么。

任何帮助,将不胜感激。谢谢!

4

1 回答 1

0

一个问题:您所有的产品都有相同的 sku:“电子商务”。来自电子商务跟踪代码文档

确保库存中的每件商品都有唯一的 SKU。如果您的库存中包含具有相同 SKU 的不同商品,并且访问者同时购买了这两种商品,您将仅收到最近添加的数据

如果您的购物车表没有某种产品 ID 或 SKU,您可以将产品名称用于 SKU 和产品名称参数。

于 2012-09-15T03:24:16.513 回答