0

e コマース ストアで GA を設定しようとしているところ、実際の商品アイテムが GA にまったく公開されないという問題が発生しています。合計金額は正常に機能していますが、アイテム データはまったく送信されません。

Chrome で Google Analytics デバッガーを使用すると、変数によって返される値が別の行にあるために、これが発生しているように見えます。それが新しい行にあるとき、Google は、少なくともそれがどのように見えるか、価値がないと読みます。

改行を表示するデバッガー ウィンドウの画面を添付しました。

ここに画像の説明を入力

コードを確認する前に、値と製品と価格を取得するには、e コマースのサンキュー ページのテーブルをトラバースする必要があることに注意してください。これは、使用している e コマース システムに 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>

ご覧のとおり、変数値から余分なスペースを削除しようとさえしています。

私のコンソール テストでは、すべてが改行のない 1 行の文字列であるため、一体何が起こっているのかわかりません。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

0

1 つの問題: すべての商品の SKU が「e コマース」と同じです。e コマース トラッキング コードのドキュメントから:

在庫内の各アイテムに固有の SKU があることを確認してください。在庫に同じ SKU の異なるアイテムがあり、訪問者がそれらの両方を購入した場合、最後に追加されたアイテムのみのデータを受け取ります。

ショッピング カート テーブルに何らかの種類の製品 ID または SKU がない場合は、SKU パラメーターと製品名パラメーターの両方に製品名を使用できます。

于 2012-09-15T03:24:16.513 に答える