有没有办法使用javascript解决方案将Google analytics client_id发送给Piwik?实际上我可以使用官方文档中描述的以下代码片段获取谷歌的客户端ID:
ga(function(tracker) {
var clientId = tracker.get('clientId');
});
我认为问题在于Google的ga.js和Piwik的跟踪代码是异步运行的,而且我无法将client_id发送给Piwik。我在Piwik中创建了一个自定义模具,并将相关代码添加到我的跟踪脚本中,但Piwik说“价值未定义'”。我试图发送静态ID(例如test123)并且它工作正常。
我尝试在加载window.onload
功能的页面后加载Piwik的跟踪代码,但它没有用。我也试着等到clientId
变量生成但它既没有工作也没有。我试图为这两个跟踪脚本打开异步选项而没有运气。
我运行chrome的时间线调试,看看每个跟踪代码的加载时间,但即使稍后加载了Piwik的js代码,client_id也没有传递到我的服务器。
知道如何将这些信息发送到我自己的服务器以便在Piwik中处理它?如果有人可以提到另一种调试可能性,这可以帮助我找出那个也很棒的问题。
答案 0 :(得分:0)
正如EikePierstorff所提到的,更好的解决方案是从存储的cookie中读取Google的client_id
。您可以通过发出以下内容获取Google Analytics Cookie的内容:
document.cookie.valueOf('_ga')
它列出了cookie的内容。 Cookie中的每个元素都以分号(;
)分隔。我使用以下代码来阅读client_id
:
function getClientId(){
var cookie_val_array = document.cookie.valueOf('_ga').split(';');
for (i=0; i < cookie_val_array.length; i++){
if(cookie_val_array[i].indexOf('_ga=') >= 0){
client_id = cookie_val_array[i].split('.')[2] + '.' + cookie_val_array[i].split('.')[3];
}
}
return client_id;
}
我使用以下代码将其传递给Piwik:
_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = getClientId()]);
注意:您应该在Piwik中设置自定义维度,并且您的自定义维度可能具有不同的ID。
我想强调的几点:
如果这是您第一次运行Google Analytics&#39;代码片段 您的页面和cookie尚未生成,但此代码将提供 错误。所以你需要处理它。
Google可能会更改其Cookie的格式和内容,所以请 在开始阅读任何内容之前检查cookie的内容 它的价值观。