Javascript 将Google analytics客户端id发送到Piwik

Javascript 将Google analytics客户端id发送到Piwik,javascript,google-analytics,matomo,Javascript,Google Analytics,Matomo,有没有办法通过使用javascript解决方案将Google analytics客户端id发送到Piwik?实际上,我可以用官方文档中描述的以下代码片段获取google的客户id: ga(function(tracker) { var clientId = tracker.get('clientId'); }); 我相信问题在于Google的ga.js和Piwik的跟踪代码是异步运行的,我无法将客户端id发送给Piwik。我在Piwik中创建了一个自定义diemns

有没有办法通过使用javascript解决方案将Google analytics客户端id发送到Piwik?实际上,我可以用官方文档中描述的以下代码片段获取google的客户id:

    ga(function(tracker) {
      var clientId = tracker.get('clientId');
    });
我相信问题在于Google的ga.js和Piwik的跟踪代码是异步运行的,我无法将客户端id发送给Piwik。我在Piwik中创建了一个自定义diemnsion,并将相关代码添加到我的跟踪脚本中,但Piwik说“值未定义”。我尝试发送静态ID(例如test123),它工作正常

我尝试在使用
window.onload
函数加载页面后加载Piwik的跟踪代码,但没有成功。我还试图等到
clientId
变量生成,但它也不起作用。我尝试为这两个跟踪脚本启用异步选项,但没有成功

我运行chrome的timeline debug查看每个跟踪代码何时加载,但即使Piwik的js代码稍后加载,客户端id也没有传递到我的服务器


你知道我如何将这些信息发送到我自己的服务器,以便在Piwik中进行处理吗?如果有人能提到另一种可能的调试方法,它可以帮助我识别问题,这也会很好。

正如EikePierstorff所提到的,更好的解决方案是从存储的cookie中读取Google的
客户端id
。您可以通过发布以下命令获取Google Analytics cookie的内容:

document.cookie.valueOf('_ga')
它列出了cookie的内容。cookie中的每个元素都用分号(
)分隔。我使用以下代码读取
客户机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标记的自定义维度,并且您的自定义维度可能有不同的id

我想强调几点:

  • 如果这是您第一次在上运行Google Analytics的代码片段 您的页面和cookie尚未生成。此代码将给出 错误。所以如果你想的话,你需要处理这个问题

  • 谷歌可能会改变cookie的格式和内容,所以请 在开始读取任何内容之前,请检查cookie的内容 它的价值观


在发送数据之前,您可以忽略Google的建议,不要直接访问cookie,而是通过piwik函数中的JS进行读取。@Eikepierstorf感谢您的评论!只是得出了同样的结论。正在研究解决方案。我一做完就把它贴在这里。
_paq.push(['setCustomDimension', customDimensionId = 1, customDimensionValue = getClientId()]);