1

我正在尝试使用这个Ruby Google Analytics API Dashing 小部件,其 Ruby 文件是

require 'google/api_client'
require 'date'


    # Update these to match your own apps credentials
    service_account_email = '[YOUR SERVICE ACCOUNT EMAIL]' # Email of service account
    key_file = 'path/to/your/keyfile.p12' # File containing your private key
    key_secret = 'notasecret' # Password to unlock private key
    profileID = '[YOUR PROFILE ID]' # Analytics profile ID.

    # Get the Google API client
    client = Google::APIClient.new(:application_name => '[YOUR APPLICATION NAME]', 
      :application_version => '0.01')

    # Load your credentials for the service account
    key = Google::APIClient::KeyUtils.load_from_pkcs12(key_file, key_secret)
    client.authorization = Signet::OAuth2::Client.new(
      :token_credential_uri => 'https://accounts.google.com/o/oauth2/token',
      :audience => 'https://accounts.google.com/o/oauth2/token',
      :scope => 'https://www.googleapis.com/auth/analytics.readonly',
      :issuer => service_account_email,
      :signing_key => key)

    # Start the scheduler
    SCHEDULER.every '1m', :first_in => 0 do

      # Request a token for our service account
      client.authorization.fetch_access_token!

      # Get the analytics API
      analytics = client.discovered_api('analytics','v3')

      # Start and end dates
      startDate = DateTime.now.strftime("%Y-%m-01") # first day of current month
      endDate = DateTime.now.strftime("%Y-%m-%d")  # now

      # Execute the query
      visitCount = client.execute(:api_method => analytics.data.ga.get, :parameters => { 
        'ids' => "ga:" + profileID, 
        'start-date' => startDate,
        'end-date' => endDate,
        # 'dimensions' => "ga:month",
        'metrics' => "ga:visitors",
        # 'sort' => "ga:month" 
      })

      # Update the dashboard
      send_event('visitor_count',   { current: visitCount.data.rows[0][0] })
    end

但是,我收到Undefined method '[]' for nil:NilClass倒数第二行的错误。谁能阐明这里发生了什么?

编辑:我现在知道 visitCount.data 是一个 NIL 对象数组。我可以执行任何诊断以确保 API 连接正确吗?任何人都可以提出发生这种情况的可能原因吗?

4

2 回答 2

2

在直播活动之前试试这个

if visitCount.data.rows[0].empty?
  # assign some default
  output = -1
else
  output = visitCount.data.rows[0][0] 
end

# Update the dashboard
send_event('visitor_count',   { current: output })
于 2013-11-21T01:44:56.820 回答
0

好的,事实证明我得到了错误的个人资料 ID。令人惊讶的是,没有出现“此配置文件 ID 不存在”之类的错误。那会更有帮助。无论如何,我现在拥有正确的个人资料 ID,并且可以正常工作。如果有人想知道,要找到配置文件 ID,您可以导航到您感兴趣的分析配置文件,并且 url 的末尾有类似 pXXXXXXXX 的内容,其中 X 是您的配置文件 ID。

于 2013-11-21T18:12:30.143 回答