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



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

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

我自己不是bash向导,所以会有任何方法来改进这一点(我改编了我在网上找到的一个例子),但这里是一个简单的例子。

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

但是,该示例假设csv文件中的第一列包含一个可以用作cid的参数。请注意,一个会话最多有500次点击(因此之后您需要切换cid),并且每个会话的点击次数限制为20次,以每秒2次的点击次数进行补充,因此您可能希望在脚本中构建延迟。

该示例假定csv文件以分号作为分隔符(可以在IFS变量中进行调整)。它还假设有三列,一列用于cid,一列用作页面路径,一列作为文档标题。如果您有三列以上的列,最后一个值(pagetitle)将使用所有剩余的列(因此,如果有三列以下的列,请将列名追加到以"while"开头的行中)。

然后,该脚本只需构建一个url(以"while"开头的行中的变量通过名称前的美元符号进行智能化),并使用wget调用谷歌跟踪服务器(服务器返回一张gif图像,wget将存储该图像-我确信有一个选项告诉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),所以我确信它会起作用。不过,这可能不是很有效。

最新更新