如何使用 google api ruby gem 查询 google 分析 api?
How to query google analytics api using the google api ruby gem?
google api ruby client的文档缺乏实际例子,只记录了类和方法,所以很难猜到我们在现实生活中应该如何使用gem .例如,我正在尝试从 enhanced ecommerce
获取所有购买以查看它们来自何处(获取渠道或渠道分组),但我只对需要 5 个会话才能转换交易的交易感兴趣(我们的 unconvinced clients
).
首先你会需要你的分析view_id,可以在url末尾,字母p
之后得到
然后需要将路由导出到凭据:
在您的终端中:
export GOOGLE_APPLICATION_CREDENTIALS = 'folder/yourproject-a91723dsa8974.json'
有关凭据的详细信息,请参阅 google-auth-gem documentation
设置好后,可以这样查询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
其中 filters 变量的形式为 ga:medium==cpc,ga:medium==organic;ga:source==bing,ga:source==google
其中逗号 (,
) 表示 OR
,分号 (;
) 表示 AND
(其中 OR
优先于 AND
)
您可以检查 query explorer 以使用过滤器。
如果报告超过 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
例如。
google api ruby client的文档缺乏实际例子,只记录了类和方法,所以很难猜到我们在现实生活中应该如何使用gem .例如,我正在尝试从 enhanced ecommerce
获取所有购买以查看它们来自何处(获取渠道或渠道分组),但我只对需要 5 个会话才能转换交易的交易感兴趣(我们的 unconvinced clients
).
首先你会需要你的分析view_id,可以在url末尾,字母p
然后需要将路由导出到凭据: 在您的终端中:
export GOOGLE_APPLICATION_CREDENTIALS = 'folder/yourproject-a91723dsa8974.json'
有关凭据的详细信息,请参阅 google-auth-gem documentation
设置好后,可以这样查询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
其中 filters 变量的形式为 ga:medium==cpc,ga:medium==organic;ga:source==bing,ga:source==google
其中逗号 (,
) 表示 OR
,分号 (;
) 表示 AND
(其中 OR
优先于 AND
)
您可以检查 query explorer 以使用过滤器。
如果报告超过 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
例如。