0

고급 전자 상거래 분석을 구성하여 주문 확인 페이지에서 거래 데이터를 읽으려고합니다.Google 태그 관리자 및 고급 전자 상거래 - 거래 제품

내게 사용 가능한 유일한 옵션이므로 Dom 요소의 데이터를 스크랩하고 있습니다.

transactionId, transactionTotal, transactionShipping 등의 필드를 읽을 수 있지만 transactionProducts는 읽을 수 없습니다. (나는 단지 1 개의 제품을 읽을 수 있지만, 순서대로 여러 제품이 있다면 더 이상 읽을 수는 없다).

내 데이터 층과 같이 사용자 정의 HTML 태그로 추가되었습니다 -

<script>  
window.dataLayer = window.dataLayer || [] 
    dataLayer.push({ 
     'transactionId': {{transactionId}}, 
     'transactionAffiliation': 'Company name',  
     'transactionTotal': {{transactionTotal}}, 
     'transactionTax': 0, 
     'transactionShipping': {{transactionShipping}}, 
     'transactionProducts': [{ 
      'sku': {{productCode}}, 
      'name': {{transactionName}}, 
      'category': 'Generic category', 
      'price': {{transactionPrice}}, 
      'quantity': {{transactionQuantity}} 
     }] 
    }); 
</script> 

필드는 사용자 정의 자바 스크립트 변수입니다.

는 TransactionId - - 예를 들어

function() { 
    var transactionId = document.querySelector([id*='OrderNumberValue']").textContent; 
return transactionId; 
} 

태그가 데이터 층 (당신이 볼 수 있듯이, 단 1 트랜잭션 제품이 때 반환되는 지금과 같은 확인 페이지에서 발사되면 순서에 2 개의 제품이 있습니다) -

Window Loaded: 
    {event: 'gtm.load'} 
    transactionId: '1000001', 
    transactionAffiliation: 'Company name', 
    transactionTotal: '10.00', 
    transactionTax: 0, 
    transactionShipping: '0.00', 
    transactionProducts: [ 
    { 
     sku: 'SAMPLE1', 
     name: 'Sample product', 
     category: 'Generic category', 
     price: '5.00', 
     quantity: '1' 
    }] 
} 
{gtm.start: 1474472447660, event: 'gtm.js'} 

정말 고마워요. 당신이 제품에 대한 HTML이 어떻게 보이는지를 보여주지 않는 한만큼 정말 답할 아니지만, 기본적으로 당신이 결과를 반복 한 후 제품을 포함하는 요소에 Document.querySelectorAll을 사용할 것

감사

답변

0

각 개별 결과에 대해 내부 요소의 값을 선택하십시오. 반복 할 때마다 (임시) 제품 오브젝트에 지정하고, 트랜잭션 제품에 추가하는 등의 작업을 수행합니다.

var results= document.querySelectorAll('.product'); 

transactionProducts = []; 
for (i = 0; i < results.length; ++i) { 
result = results[i]; 
tmp = {}; 
tmp.price = result.querySelector('.sku').textContent; 
tmp.price = result.querySelector('.price').textContent; 
transactionProducts.push(tmp); 
} 

정말 시험 또는 아무것도 (그리고 nodelists을 반복하는 더 우아한 방법은 분명히있다), 그러나 이것은 당신에게 아이디어를 줄 것이다 없습니다.

+0

응답 해 주셔서 감사합니다. 이를 통해 문제를 해결할 수있는 올바른 방향으로 나를 안내 할 수있었습니다. –

관련 문제