如何动态更改谷歌标签帐户ID - 角度应用程序

时间:2018-03-04 10:38:30

标签: javascript angular google-tag-manager

我正在尝试在我的应用中实施Google代码管理器(角度5应用)

然而,我的应用程序正在为少数客户(公司帐户)提供服务,从多个路径访问应用程序,例如:www.myapp.com/dymamiPath123(完全动态 - 无法硬编码)

我需要根据来自服务器的数据更改google标记ID (我在我的数据库中保存每个帐户的谷歌标签ID)

我目前在我的index.html中有这个

 <script>
    (function(w, d, s, l, i) {
        w[l] = w[l] || [];
        w[l].push({
            'gtm.start': new Date().getTime(),
            event: 'gtm.js'
        });
        var f = d.getElementsByTagName(s)[0],
            j = d.createElement(s),
            dl = l != 'dataLayer' ? '&l=' + l : '';
        j.async = true;
        j.src =
            'https://www.googletagmanager.com/gtm.js?id=' + i + dl;
        f.parentNode.insertBefore(j, f);
    })(window, document, 'script', 'dataLayer', '** id ***');
</script>

如何在部署应用程序之前更改它? 它足以改变函数中的id? (不是我知道怎么做) 或更改所有渲染的标签?

谢谢!

3 个答案:

答案 0 :(得分:0)

为什么不只使用一个GTM并为要发送信息的网络媒体资源制作一个查找表?

所以你只需要一个始终可用用户来源的变量(让我们称之为原点)。 并且您使用针对特定来源或通用触发器的触发器设置所有标记,但总是使用表格,以便根据来源向不同的GA帐户发送匹配。

最后,如果您希望拥有包含所有数据的中央网络媒体资源(在用户级别使用自定义维度来保存原点),则可以选择复制匹配。这是我们的上师:https://www.simoahava.com/gtm-tips/send-google-analytics-tag-multiple-properties/

希望它有所帮助!

答案 1 :(得分:0)

这个看起来有点老,但是我有同样的问题。根据引荐来源,同一页面必须使用GTM或其他。这是因为相同的JSP用于严重的客户端。

因此,我在加载GTM的位置添加了一个变量'$ {gtmIdentificador}'。我看起来要工作。

在Java上使用JSP。您可以在chrome上使用dataslayer进行测试。

<script> (function(w,d,s,l,i){
w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName(s)[0],j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';
j.async=true;j.src='https://www.googletagmanager.com/gtm.js?id='+i+dl;
f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','${gtmIdentificador}');</script>

答案 2 :(得分:0)

在我的应用程序中,我遇到了类似的情况,在不同的环境(开发环境/阶段/产品)中,我们使用了不同的Google标记ID。 要在脚本标签中解决此问题,请根据域名动态地将文件路径保存在三个单独的文件中

gta.script.dev.js
gta.script.stage.js
gta.script.prod.js

<script>
// change to hostname
let domain = window.location.host;
let src = './path/gta.script.prod.js';

if (domain === "stage.domain.name") {
    src = './path/gta.script.stage.js';
}
else if (domain === "prod.domain.name") {
    src = './path/gta.script.prod.js';
}
else if (domain === "stage.domain.name") {
    src = './path/gta.script.prod.js';
}

function addScript(src) {
    var s = document.createElement('script');
    s.setAttribute('src', src);

    document.body.appendChild(s);
}
addScript(src);