我正在构建一个功能,可以从一长串配置文件中下载Google分析数据,并且需要一个可以容忍不返回数据的配置文件的循环函数。
问题是在循环开始和错误发生之间需要几个函数。
粘贴功能从idsvector
中提取ID,然后在2个连续步骤中构建API查询。然后使用GetReportData()
将其发送到API。列表中的第二个ID不返回API中的数据。目前,它从第一个配置文件下载数据,将其与主数据集合并然后停止。
for (v in idsvector){
view.id <- paste("ga:",v,sep="") #the View ID parameter need to have "ga:" in front of the ID
sourcequery.list <- Init(
start.date = start.date,
end.date = end.date,
dimensions = "ga:channelGrouping,ga:campaign,ga:source,ga:medium,ga:date",
metrics = "ga:sessions,ga:bounces",
table.id = view.id,
max.results = 9999999
)
}
ga.sourcequery <- QueryBuilder(sourcequery.list)
data <- GetReportData(ga.sourcequery, token)
error=function(e){dev.off(); return(NULL)}
if (!is.null(data)) {
data$Property <- view.id
final.data<-rbind(sourcequery.data,data)
}
else {
next
}
}
我如何调整它以使其循环并尝试下一个ID?
答案 0 :(得分:0)
不确定这是否可以解决您的问题,但更好的方法是使用lapply
。
目前尚不清楚您使用哪个库来访问GA,因此我会为您编写一些代码:
library(data.table)
ga_load_property_data <- function(property) {
# here goes GA API wrapper magic
}
data <- lapply(properties, ga_load_property_data)
data <- rbindlist(data, idcol = "property")
这样就可以将加载逻辑与迭代分开。