2012-03-29 90 views
0

我正在使用红宝石宝石的谷歌分析API。它接受参数并生成结果,我从七个度量中获取数据。它接受开始时间和结束时间,并根据我们传递的时间生成数据。迭代24小时在红宝石30天的时间

这里是一个

Visits.results(pro1, {:start_date => Time.now - 86400, :end_date => Time.now}) 

这使我对过去24小时的访问总数的样本。

我的要求并不复杂。还有其他几个指标。我需要从过去30天的Google Analytics数据中获取数据。假设如果我今天转储它应该得到我以前30天的数据。像28日27日26日25日....得到了2012年3月28日00:00:00〜2012年3月28日59:59:59,2012年3月27日00:00:00〜2012年3月27日59:59:59的数据......我必须在2-3天之内努力实现这一目标。我是红宝石的新手。请帮助我。为了使我需要从谷歌分析数据中获取数据,在过去的30天内迭代24小时。

+0

你在寻找类似 '(Time.now - 1.days), (Time.now - 1.months), (Time.now - 1.years)' 注:其工作与轨道 – 2012-03-29 10:36:46

回答

1

如果你想结果各天

results = [] 
30.downto(1) do |n| 
    results << Visits.results(pro1, {:start_date => Date.today - n.days, :end_date => Date.today - (n-1).days}) 
end 

,或者如果你想一次全部

Visits.results(pro1, {:start_date => Date.today - 30.days, :end_date => Date.today}) 

如果你想包括今天还有那么设定的结束日期,以Date.tomorrow

+0

从可读性的角度来看,我更喜欢使用'n.days.ago'。例如。 'Visits.results(pro1,{:start_date => n.days.ago,:end_date =>(n-1).days.ago})' – 2012-03-29 11:10:32

+0

n.days.ago包含时间 - 所以'1.day。以前是昨天在当前时间。而'Date.today-1.day'只给出日期(相当于昨天午夜)。如果您使用的是时间部分,这是一个重要的区别 – Shaun 2012-03-29 11:35:15

+0

好点Shaun,在这种情况下'Date.today - 1.day'确实有意义。虽然(这可能只是我个人的偏好),你也可以做'1.day.ago.at_midnight'或'1.day.ago.to_date' – 2012-03-29 11:49:48

0

尝试

Visits.results(pro1, {:start_date => Date.today.last_month , :end_date => Date.today})