简体   繁体   中英

Google Analytics code line break for _gaq.push(['_addTrans'

Trying to get GA set up with our ecommerce store and running into an issue where the actual product items aren't publishing at all to GA. The total price is working fine, but none of the item data comes through.

Using the Google Analytics debugger in Chrome, it seems as though this is happening because the values returned by the variables are on a separate line. When it is on a new line, Google reads it as having no value, at least that what it seems like.

I've attached a screen of the debugger window to show the line breaks.

在此处输入图片说明

Before you take a look at the code, please note that in order to get the values and products and pricing, I have to traverse a table on the ecommerce thank you page because the ecommerce system we use doesn't have any API's...

Here's the code with the table that was exported in a test order.

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

As you can probably see as well, I even attempt to remove extra spaces from the variable values.

In my console tests, everything is a single line string with no linebreaks, so I have no clue what the heck is going on.

Any help would be appreciated. Thanks!

One issue: all your products have the same sku: "Ecommerce". From the Ecommerce tracking code docs :

Ensure that each item in your inventory has a unique SKU. If your inventory has different items with the same SKU, and a visitor purchases both of them, you will receive data for only the most recently added

If your shopping cart table doesn't have some kind of product id or SKU, you could use the product name for both the SKU and product name parameters.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM