哪个实用程序或UNIX命令可以帮助向Google Universal Analytics提交大量事件数据?

时间:2014-10-26 13:58:58

标签: unix google-analytics universal-analytics

https://developers.google.com/analytics/devguides/collection/protocol/v1/reference

在上面的链接中详细说明了测量协议。假设我有一个包含EventName,ClientID等列的CSV文件,我想将其提交给Universal Analytics系统。是否有UNIX命令,实用程序或第三方软件允许我从命令行或任何类型的友好UI提交数据?

1 个答案:

答案 0 :(得分:0)

我自己不是一个bash向导,所以有任何方法可以改进这个(我改编了一个example I found on the web),但这里是一个准系统示例。

要将匹配分组到会话中(如果适用),您需要一个客户端ID。客户端ID是必需参数,但如果要将文件中的每一行记录为新会话,则可以使用随机数作为cid参数。

但是,该示例假定csv文件中的第一列包含可用作cid的参数。请注意,一个会话最多有500次点击(所以之后你需要切换cid)并且每次会话限制为20次点击,每秒点击2次点击,所以你可能想要延迟脚本。

该示例假定带有分号作为分隔符的csv文件(可以在IFS变量中进行调整)。它还假设有三列,一列用于cid,一列用于页面路径,一列用于文档标题。如果你有三列以上,那么最后一个值(pagetitle)将消耗所有剩余的列(所以如果有三列以上的列在以&#34开头的行中追加列名,而")。

然后脚本只是构建一个url(以&#34开头的行中的变量;而#34;通过名称前面的美元符号进行交互)并使用wget调用Google跟踪服务器(服务器返回一个wget将存储的gif图像 - 我确定有一个选项告诉wget从请求中解除内容。

#!/bin/bash
UAID="UA-XXXXX-XX" // Google Analytics Account ID
INPUT=data.cvs // Input file name
OLDIFS=$IFS // store default csv delimiter
IFS=; // set csv delimiter
[ ! -f $INPUT ] && { echo "$INPUT file not found"; exit 99; } // nice error message if input file is missing
while cid page pagetitle // while there are rows in the csv read fields
do
    wget "www.google-analytics.com/collect?v=1&tid=$UAID&cid=$cid&t=pageview&dp=$page&dt=$pagetitle" // call Google Tracking server 
done < $INPUT // no more rows
IFS=$OLDIFS // restore default csv delimiter

显然,您必须使此脚本可执行。我测试了这个(最近的Debian / bash),所以我相信这会有效。但这可能不是很有效。