Durante años he tenido el fragmento de Google Universal Analytics en un archivo js externo. Por supuesto, tuvo que ser convertido para usarlo allí. Ahora intento hacer lo mismo con el fragmento de código más nuevo de Google Analytics 4 (gtag). Hasta el momento, la recopilación de datos en Google Analytics no está ocurriendo. Primero probé el fragmento en el encabezado, y funciona de esa manera.
Aquí está el fragmento proporcionado por Google, que se supone que debe ir en la sección principal:
<!-- Global site tag (gtag.js) - Google Analytics --> <script async src="https://www.googletagmanager.com/gtag/js?id=myGtagID"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'myGtagID'); </script>
Aquí está la llamada que ya está en cada página web en su sección de cabecera:
<script type="text/javascript"> <!-- window.onload=function(){ analytics(); } //--> </script>
Aquí está el código dentro de mi archivo js externo:
function analytics(){ /* Universal Analytics property (analytics.js) - OLD CODE WHICH WORKS */ var _gaq = _gaq || []; _gaq.push(['_setAccount', 'myUA_ID']); _gaq.push(['_trackPageview']); (function() { 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); })(); /* Google Analytics 4 property (gtag.js) - NEW CODE NOT WORKING */ gtag.push(['js', new Date()]); gtag.push(['config', 'myGtagID']); (function() { var ga4 = document.createElement('script'); ga4.type = 'text/javascript'; ga4.async = true; ga4.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.googletagmanager.com/gtag/js?id=myGtagID'; var t = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga4, t); })(); }
Actualmente, GA4 no funciona con el protocolo file://, solo con http:// y https://
¿Está utilizando el protocolo file:// en Cordova, por ejemplo? Si es así, GA4 bloqueará los análisis.
Acabo de echar otro vistazo a tu código. Parece que está intentando usar GA4 tal como usó GA3. Los 2 no son interoperables y no comparten los mismos métodos y propiedades. GA4 es un producto analítico completamente nuevo de Google.
Consulte la documentación de Google para obtener más detalles.