[英]How to query google analytics api using the google api ruby gem?
google api ruby 客户端的文档缺乏实际示例,仅记录了类和方法,因此很难猜测我们应该如何在现实生活中使用 gem。 例如,我试图从enhanced ecommerce
中获取所有购买,以查看它们来自哪里(获取渠道或渠道分组),但我只对需要 5 个会话才能转换交易的交易感兴趣(我们unconvinced clients
)。
首先你需要你的analytics view_id,可以在末尾的url中获得,在字母p
之后
然后您需要将路由导出到凭证: 在您的终端中:
export GOOGLE_APPLICATION_CREDENTIALS = 'folder/yourproject-a91723dsa8974.json'
有关凭据的更多信息,请参阅google-auth-gem 文档
设置好之后就可以像这样查询api
require 'googleauth'
require 'google/apis/analyticsreporting_v4'
scopes = ['https://www.googleapis.com/auth/analytics']
date_from = 10.days.ago
date_to = 2.days.ago
authorization = Google::Auth.get_application_default(scopes)
analytics = Google::Apis::AnalyticsreportingV4::AnalyticsReportingService.new
analytics.authorization = authorization
view_id = '189761131'
date_range = Google::Apis::AnalyticsreportingV4::DateRange.new(start_date: date_from.strftime('%Y-%m-%d'), end_date: date_to.strftime('%Y-%m-%d'))
metric = Google::Apis::AnalyticsreportingV4::Metric.new(expression: 'ga:transactions')
transaction_id_dimension = Google::Apis::AnalyticsreportingV4::Dimension.new(name: 'ga:transactionID')
adquisition_dimension = Google::Apis::AnalyticsreportingV4::Dimension.new(name: 'ga:channelGrouping')
filters = 'ga:sessionsToTransaction==5'
request = Google::Apis::AnalyticsreportingV4::GetReportsRequest.new(
report_requests: [Google::Apis::AnalyticsreportingV4::ReportRequest.new(
view_id: view_id,
metrics: [metric],
dimensions: [transaction_id_dimension, adquisition_dimension],
date_ranges: [date_range],
filters_expression: filters
)]
)
response = analytics.batch_get_reports(request)
response.reports.first.data.rows.each do |row|
dimensions = row.dimensions
puts "TransactionID: #{dimensions[0]} - Channel: #{dimensions[1]}"
end
注意filters_expression: filters
其中过滤器变量的形式为ga:medium==cpc,ga:medium==organic;ga:source==bing,ga:source==google
其中逗号 ( ,
) 表示OR
并且分号 ( ;
) 表示AND
(其中OR
优先于AND
)
您可以检查查询资源管理器以使用过滤器。
这是过滤器文档
如果报告带来超过 1000 行(默认最大行),则会出现 next_page_token 属性。
response.reports.first.next_page_token
=> "1000"
您必须存储该号码才能在下一个 ReportRequest 中使用它
next_request = Google::Apis::AnalyticsreportingV4::GetReportsRequest.new(
report_requests: [Google::Apis::AnalyticsreportingV4::ReportRequest.new(
view_id: view_id,
metrics: [metric],
dimensions: [transaction_id_dimension, adquisition_dimension],
date_ranges: [date_range],
filters_expression: filters,
page_token: "1000"
)]
)
直到
next_response.reports.first.next_page_toke
=> nil
或者,您可以通过添加page_size: 10_000
来更改报告请求的默认页面大小。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.