繁体   English   中英

如何使用谷歌 api ruby gem 查询谷歌分析 api?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM