各繰り返しの開始日がリスト(begDate)に含まれているGAのデータを照会しています。私は、lapplyがリストを巡回する前にエラーが発生した場合、tryCatchを使用してクエリされたデータの損失を止める方法を研究しました。 通常、タイムアウトのためにエラーが発生します。私は、次の要素に移動する前に要素を再試行できるようにしたいと思います。これを行うために、私はtryCatch本体と同じコードをエラーハンドラに入れました。ただし、エラーハンドラのクエリもタイムアウトすると、これはうまくいきません。どのようにこれを正しく書いていますか?私が見つけたほとんどの投稿は、この問題をループで処理したり、次の要素に移動したりします。私はリスタートも見ていたが、使い方を理解していなかった。lapplyのtryCatchでリストの要素を再試行
begDate<-array(c(seq(as.Date("2014-04-01"), as.Date("2014-04-03"), by="1 day"))) #defining start date for each query
Test<-lapply(begDate, function(bDt){ #uses each element of begDate as the beginning time period of query with 90 day length
rg2<-paste0("users::condition::ga:sessionCount==1;dateOfSession<>", as.Date(bDt, origin = "1970-01-01"), "_", as.Date(bDt, origin = "1970-01-01"), ";users::condition::ga:goalCompletionsAll>0")
tryCatch(ga$getData(id,
walk = TRUE,
batch = TRUE,
start.date = as.Date(bDt+1, origin = "1970-01-01"),
end.date = as.Date(bDt+15, origin = "1970-01-01"),
metrics = "ga:sessions, ga:goalCompletionsAll" ,
dimensions = "ga:date, ga:goalPreviousStep1, ga:goalPreviousStep2, ga:goalPreviousStep3",
segment = paste0(rg2),
filters = ""
)
, error=function(e) { # just retries the query
ga$getData(id,
walk = TRUE,
batch = TRUE,
start.date = as.Date(bDt+1, origin = "1970-01-01"),
end.date = as.Date(bDt+15, origin = "1970-01-01"),
metrics = "ga:sessions, ga:goalCompletionsAll" ,
dimensions = "ga:date, ga:goalPreviousStep1, ga:goalPreviousStep2, ga:goalPreviousStep3",
segment = paste0(rg2),
filters = ""
)
}
)
})