【问题标题】:Google Analytics API - Ruby as code baseGoogle Analytics API - Ruby 作为代码库
【发布时间】:2015-05-04 16:52:10
【问题描述】:

下面我有来自谷歌分析 API 的结果。这是我从developers.google.com 运行的查询的输出。

"start-date": "2015-04-01",
  "end-date": "today",
  "dimensions": "ga:source",
  "metrics": [
   "ga:users"
  ],
  "sort": [
   "-ga:users"
  ],

{
   "name": "ga:source",
   "columnType": "DIMENSION",
   "dataType": "STRING"
  },
  {
   "name": "ga:users",
   "columnType": "METRIC",
   "dataType": "INTEGER"
  }
 ],
 "totalsForAllResults": {
  "ga:users": "2201795"
 },
 "rows": [
  [
   "(direct)",
   "869648"
  ],
  [
   "sa",
   "591843"
  ],

我试图在我的代码(ruby)中做的是从“行”中提取信息。我需要推荐名称“sa”和用户数“591843”。

这是我试图做到这一点的方式。

sa_referral = client.execute(:api_method => analytics.data.ga.get, :parameters => {
    'ids' => "ga:" + saprofileID,
    'dimensions' => "ga:fullreferrer",
    'metrics' => "ga:users",
    'sort' => "-ga:users",
    'filters' => "ga:ga:source!=us-mg6.mail.yahoo.com;ga:source!=sa;ga:source!=(direct);ga:source!=mail.google.com;ga:source!=us-mg5.mail.yahoo.com;ga:source!=SA;ga:source!=m.mg.mail.yahoo.com;ga:source!=mail.aol.com;ga:source!=us-mg4.mail.yahoo.com;ga:source!=yahoo;ga:source!=bing;ga:source!=google;ga:source!=weibo;ga:fullreferrer!=eccie.net/showthread.php",
    'start-date' => startDate,
    'end-date' => endDate,
    })

sa_referral_data = sa_referral.rows do |row|
  rows.map{|r| { referrals:r[0], members:r[1] }}
end
puts sa_referral_data

puts sa_referral_data 的结果如下

scheduler caught exception:
undefined method `rows' for #<Google::APIClient::Result:0x000000044651f0>

API 似乎根本没有从行中获取信息。有没有办法可以对 API 进行故障排除,看看为什么它会丢失“行”部分的数据?

【问题讨论】:

    标签: ruby google-analytics


    【解决方案1】:

    sa_referral.each代替sa_referral.rows

    我的项目中的示例代码.....它使用相同的方法查询谷歌并返回结果。

    result = client.execute(
      :api_method => api.users.list,
      :parameters => { 'domain' => domain,
              'orderBy' => 'givenName',
            'maxResults' => 200,
            'pageToken'=> pageToken,
            #'fields' => 'users(id,etag,primaryEmail,name,suspended)',
            'fields' => 'nextPageToken,users(primaryEmail,suspended)',
            'query' => "orgUnitPath=#{orgUnitPath}"
       }
    )
    #pp result   # There should be results here
    #pp result.methods #Displays what commands you can use on the object
    returnabledata = Array.new;
    result.data.users.each do |user|
      if user["suspended"] == false
        returnabledata << user["primaryEmail"]
      end
    end
    

    【讨论】:

    • 当我将它从 .rows 更改为 .each 时,同样的错误消息也适用。调度程序捕获异常:#<:apiclient::result:0x000000044651f0> 的未定义方法“每个”
    • pp sa_referral的结果是什么
    • 另外,你是如何生成客户端对象的?有两种方法。一种是基于用户的身份验证,另一种是通过服务器到 Google 的身份验证。你在做什么?
    • 当我使用 pp sa_referral 时没有返回数据,但是我使用 puts sa_referral 我得到以下信息:'#<:apiclient::result:0x000000031b37a0> 我使用的是基于用户的。这是我生成客户端对象的方式:client = Google::APIClient.new( :application_name =&gt; 'focused-world-744', :application_version =&gt; '0.01' ) max_amount = 100 visitors = [] key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret) client.authorization = Signet::OAuth2::Client.new( :token_credential_uri =&gt; :audience =&gt; :scope =&gt; :issuer =&gt; :signing_key =&gt;'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 2010-11-07
    • 1970-01-01
    • 2013-10-04
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    相关资源
    最近更新 更多