Доступ к результатам Garb Gem - PullRequest
1 голос
/ 13 мая 2011

Я играю с драгоценным камнем Garb для рубина, но у меня возникают проблемы с доступом к результатам.

Вот мой код.

Garb::Session.login('user@demo.com', 'password')
profile = Garb::Management::Profile.all.detect {|profile| profile.web_property_id == 'UA-XXXXX-X'}
@ga = profile.stats(:start_date => (Date.today - 1), :end_date => Date.today)

И если я использую отладку в представлении, я вижу результаты, но что бы я ни пытался, я не могу получить доступ к результатам.

Вот результат отладки

--- !ruby/object:Garb::ResultSet 
        results: 
        - !ruby/object:OpenStruct 
          table: 
            :exits: "7820"
            :pageviews: "24171"
        sampled: false
        total_results: 1

т

  • @ga.results.table.exits
  • @ga.exits
  • @ga.table.exits

Я тоже попытался создать массив, но не повезло.

Вы использовали этот камень раньше? Если да, то как мне получить доступ к этим результатам?

Ответы [ 2 ]

4 голосов
/ 24 мая 2011

Garb::ResultSet является перечислителем, поэтому вы можете использовать любой из методов перечислителя (each, map и т. Д.). Отдельные результаты OpenStruct с, так что вы можете получить к ним доступ напрямую.

@ga.map &:exits # returns an array of all exits
0 голосов
/ 09 октября 2012

Я использую этот код, чтобы получить то, что я хочу, используя GARB.

require 'rubygems'
require 'garb'
require 'csv'

CA_CERT_FILE  = "Cthe exact location of your cacert.pem file"
username      = "your google analytics email address"
password      = "your google analytics password"
web_profile   = "UA-the correct number here"
limit         = 10000
filter        = {:productName.contains  => "some product"} # this is your filter
sorter        = :date.desc # you can use this part to sort
csvfile       = "YourResults.csv"


Garb::Session.login(username, password, :secure => true)

class Report
 extend Garb::Model

    metrics     :itemQuantity

    dimensions  :productName,
                :date,
                :customVarName2


end

CSV.open(csvfile, "w") do |csv|
      csv   << [  "itemQuantity",
                  "productName",
                  "date",
                  "customVarName2"
                  ]
end

1.times do |i| # Be careful, you can cause duplication with this iteration. only do once per 10,000 expected rows
    profile = Garb::Management::Profile.all.detect {|p| p.web_property_id == web_profile}
    options =  {
              :start_date       => (Date.today - 30),
              :end_date         =>  Date.today,
              :limit            =>  limit,
              :offset           =>  (i*limit) + 1,
              :sort           =>  sorter  
                }

    result = Report.results(profile, options)
    result = Report.results(profile, :filters => filter)     

    CSV.open(csvfile, "a") do |csv|

        result.each do |r|
            csv   << ["#{r.item_quantity}",
                      "#{r.product_name}",
                      "#{r.date}",
                      "#{r.custom_var_name2}"
                      ]
            end
      end
end

Чтобы найти файл cacert.pem, перейдите сюда http://curl.haxx.se/ca/cacert.pem, сохраните его в виде файла и ссылайтесь на него в коде..

Следует отметить, что вам нужно будет запросить метрики и измерения в паскалях, а затем поместить их в CSV с регистром подчеркивания (почему, я не знаю).

Кроме этого ты хорош как золото.Просто откройте файл CSV, когда закончите.

...