Javascript 如何动态更改google标记帐户id-angular应用程序

Javascript 如何动态更改google标记帐户id-angular应用程序,javascript,angular,google-tag-manager,Javascript,Angular,Google Tag Manager,我正在尝试在我的应用程序(angular 5应用程序)中实现google tag manager 但是,我的应用程序服务于一些客户端(公司帐户),这些客户端通过多个路径访问应用程序,例如:www.myapp.com/dymamiPath123(完全动态-不能是硬代码) 我需要更改每个来自服务器的数据的谷歌标签id (我将每个帐户的谷歌标签id保存在数据库中) 我目前在index.html中有这个 <script> (function(w, d, s, l, i) {

我正在尝试在我的应用程序(angular 5应用程序)中实现google tag manager

但是,我的应用程序服务于一些客户端(公司帐户),这些客户端通过多个路径访问应用程序,例如:
www.myapp.com/dymamiPath123
(完全动态-不能是硬代码)

我需要更改每个来自服务器的数据的谷歌标签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>

(功能(w、d、s、l、i){
w[l]=w[l]| |[];
w[l]。推({
“gtm.start”:新日期().getTime(),
事件:“gtm.js”
});
var f=d.getElementsByTagName[0],
j=d.createElement,
dl=l!=“数据层”?“&l=”+l:”;
j、 异步=真;
j、 src=
'https://www.googletagmanager.com/gtm.js?id=“+i+dl;
f、 parentNode.insertBefore(j,f);
})(窗口、文档、“脚本”、“数据层”、“id***”);
在部署应用程序之前\之后,我如何更改它? 在函数中更改id就足够了吗?(我不知道怎么做) 或者更改所有渲染的标记


谢谢

为什么不只使用一个GTM,并为要发送信息的web属性创建一个查找表

因此,您只需要一个始终可用于用户原点的变量(我们称之为原点)。 你可以为所有标签设置特定来源或通用来源的触发器,但总是给我们一个表,以便根据来源向不同的GA帐户发送点击

最后,如果希望拥有包含所有数据的中心web属性(使用用户级别的自定义维度保存原点),则可以选择复制命中。这是我们的导师:


希望有帮助

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

因此,我添加了一个变量“${gtmIdentificador}”,在其中加载GTM。我期待着工作

这是在Java上使用JSP实现的。您可以在chrome上使用dataslayer Pling进行测试

<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>
(函数(w、d、s、l、i){
w[l]=w[l]| |[];w[l].推送({'gtm.start':new Date().getTime(),event:'gtm.js'});
var f=d.getElementsByTagName[0],j=d.createElement,dl=l!=“数据层”?“&l=”+l:”;
j、 async=true;j.src=truehttps://www.googletagmanager.com/gtm.js?id=“+i+dl;
f、 parentNode.insertBefore(j,f);}(窗口,文档,'script','dataLayer','${gtmIdentificador}');

我在应用程序中遇到了类似的情况,在不同的环境(dev/stage/prod)中,我们有不同的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);
gta.script.dev.js
gta.script.stage.js
gta.script.prod.js
//更改为主机名
让domain=window.location.host;
让src='./path/gta.script.prod.js';
如果(域==“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';
}
函数addScript(src){
var s=document.createElement('script');
s、 setAttribute('src',src);
文件。正文。附录子项;
}
addScript(src);