RGoogleAnalytics:如何选择性地添加查询参数?

时间:2014-08-07 13:58:16

标签: r google-analytics

我想编写一个通用函数,通过RGoogleAnalytics从Google Analytics中检索数据,以便我可以通过编程方式创建不同的报告。

每个报告的具体维度,指标,可选过滤器和细分等都存储在配置文件中,以便我可以使用相应的配置文件名调用我的函数。

对于某些报告,我必须使用细分和过滤器,对于其他报告,这些值为空。

我将所有这些值存储在名为my *的变量中,例如,过滤器的myfilters,段的mysegment等,以及每天循环一个日期范围(以减少抽样问题)我有两个开始和结束日期的转轮变量。

我现在的自然尝试是调用查询$ Init,如下所示:

query$Init(
    start.date = as.character(dateRunner),
    end.date = as.character(dateRunnerEnd),
    dimensions = mydimensions,
    metrics = mymetrics,
    max.results = mymaxresults,
    table.id = paste("ga:", myprofileId, sep=""),
    access_token = as.character(myaccess_token),
    sort = mysorting,
    segment = mysegment,
    filters = myfilters,
)

但是,当mysorting,mysegment或myfilters为空时,它们仍会以空值添加到查询中,从而导致出现错误消息

code : 400 Reason : Invalid value ''. Values must match the following regular expression: 'ga:.+'

当我调试并使用查询$ to.uri()来查看查询的GET版本时,我得到了

https://www.googleapis.com/analytics/v3/data/ga?start-date=2014-07-01&end-date=2014-07-01&dimensions=ga%3Adate&metrics=ga%3Asessions&segment=gaid%3A%3A1ZLAUAqqRYqvub-LR5Tx2g&sort=&filters=&max-results=100&ids=ga%3A5298259&access_token=...

只有当它们为空时,才能在Init调用中添加参数sort,segment和filters来阻止错误。

但我该怎么做?我的第一次尝试是

query$Init(start.date = as.character(dateRunner),
           end.date = as.character(dateRunnerEnd),
           dimensions = mydimensions,
           metrics = mymetrics,
           max.results = mymaxresults,
           table.id = paste("ga:", myprofileId, sep=""),
           access_token = as.character(myaccess_token),
           if (nchar(mysorting)!=0) {sort = mysorting},
           if (nchar(mysegment)!=0) {segment = mysegment},
           if (nchar(myfilters)!=0) {filters = myfilters},
)

然而,这给了我奇怪的效果,比如实际添加的mysegment变量作为排序变量和类似,所以整个构造似乎是错误的?

因此我尝试在Init函数之前和之后直接手动设置调试模式中的这些值(例如查询$ sort =“ga:date”),但在此操作之后依据查询$ to.uri()给我带有来自Init调用的参数的URL,因此这个操作根本不设置这些值。似乎设置这些值的唯一方法是在Init函数调用中实际使用它们。

除了创建一个非常复杂的if-else结构,检查现有参数的每个可能组合,从而使用不同的参数组合复制整个Init调用六次 - 有没有办法可选地将它们添加到Init函数之外?

0 个答案:

没有答案