在我的电子商务网站上成功进行交易后显示的感谢页面源代码中,Google Analytics ecommerce.js插件会写入以下内容:
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-123456789-1', {'cookieDomain': 'http://www.example.com/'});
ga('require', 'displayfeatures');
ga('send', 'pageview');
ga('create', 'UA-1234567-9', 'auto', { name: 'merchantTracker' });
ga('merchantTracker.require', 'displayfeatures');
ga('merchantTracker.send', 'pageview');
Thirdparty.Event.subscribe('google.analytics.trackPageView', function(url) {
ga('send', 'pageview', url);
ga('merchantTracker.send', 'pageview', url);
});
</script>
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() {
$('.recommendation-box .in-popup a').click(function(e) {
e.preventDefault();
window.open(
this.href,
"sharing",
"width=650,height=500,resizable=no,location=no,menubar=no,scrollbars=no,status=no"
);
});
ga('require', 'ecommerce'); ga('ecommerce:addItem', {
'id': '11377927',// Transaction ID. Required.
'name': 'Test Product',// Product name. Required.
'category': 'Adult',// Category or variation.
'price': '1.0000000000',// Unit price.
'quantity': '1'// Quantity.
}); ga('ecommerce:addTransaction', {
'id': '11377927',// Transaction ID. Required.
'affiliation': 'My Site',// Affiliation or store name.
'revenue': '1.070000',// Grand Total.
'tax': '0'// Tax.
});
ga('ecommerce:send');
});
//]]>
</script>
我想使用Google跟踪代码管理器和JavaScript来提取“收入”的值并将其返回到GTM变量中。
这是在第三方平台上,我无法访问后端源代码,这就是为什么我在看GTM,这使我能够在thankyou页面上使用JS代码(我有一个GTM容器设置和工作已经在网站上的其他javascript)
我不太了解javascript或GA对象模型所以我不知道如何提取该值的最佳方法。我已经尝试过,通过Chrome控制台,看看我是否可以通过访问ga对象来回显这个值,但却找不到获取/访问它的方法。讨论诸如console.log ga('revenue')之类的东西和许多变化但我不明白对象模型是如何达到这个价值的。
如何访问“收入”的值并将其返回给GTM以用作变量?
答案 0 :(得分:0)
要将值推送到GTM,您需要先在GTM中设置dataLayer变量:
变量 - &gt;新 - &gt;选择变量类型... - &gt;数据层变量
输入您的变量名称,然后点击保存。现在您可以在GTM中使用此变量,它将随时可用,您也可以在自定义HTML中引用它,如下所示:{{stackO}} 有关详细信息:https://support.google.com/tagmanager/answer/6106899?hl=en#web
要从您的网站为此变量添加值,只需将变量推送到GTM,例如:
dataLayer.push({ &#39; stackO&#39;:&#39; exampleValue&#39; });
了解更多信息:https://developers.google.com/tag-manager/devguide
不幸的是,我认为你无法获得“收入”的价值。并将其返回给GTM以直接用作变量。这是因为电子商务并没有提供返回添加项目的功能。 (不,我知道)。参考:https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce
我只能建议尝试找出该值的来源?
&#39;收入&#39;:&#39; 1.070000&#39;,// Grand Total。
它是硬编码的吗?如果是这样,也许你可以直接从HTML中获取它。
根据您的评论,理论上您可以使用以下代码:
var x = document.head.innerText;
var revenue=x.substring(x.lastIndexOf("'revenue'")+12,x.lastIndexOf("// Grand Total") - 2);
//assuming you name your dataLayer variable "revenue" in GTM you can push it like this:
dataLayer.push({
'revenue' : revenue
});
收入是您追求的价值。但要保持谨慎,当结构变得严峻时,你的代码就会停止工作。祝你好运
答案 1 :(得分:0)
我制定了解决方案,使用innerText和regex提取它,然后获得了值&#39;收入&#39;的起点的索引。我用它来设置从指数点+12空格开始的收入数的值。 我提取了8个小数点的值,因为我永远不会高于9999.999美元的价值订单,而且我不需要超过3个小数位的值,所以这应该是我的要求的安全范围。
我在自定义javascript类型的GTM变量中使用了此代码,然后在需要的重定向像素标记中包含该变量。
console.log条目仅用于测试,但我现在已从实时变量代码中删除。
var content = document.head.innerText;
var query=/'revenue': '\d+.\d+',/;
if (content.search(query) > -1 ) {
var resultquery = (content.search(query))
var revenue = (document.head.innerText.substring(resultquery+12, resultquery+20))
console.log (revenue)
return revenue;
} else {
console.log(false);
}