尝试通过我们的电子商务商店设置 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>
正如您可能看到的那样,我什至尝试从变量值中删除多余的空格。
在我的控制台测试中,所有内容都是一个没有换行符的单行字符串,所以我不知道到底发生了什么。
任何帮助,将不胜感激。谢谢!