Ruby on Rails迁移GA4:View ID缺失下的服务端请求实现咨询
Ruby on Rails 中 GA4 服务端请求迁移实现方案
1. 替换依赖 Gem
弃用旧的 google/apis/analytics_v3,改用 Google 官方提供的 GA4 专用 Ruby Gem google-analytics-data:
- 在 Gemfile 中添加:
gem 'google-analytics-data' - 执行
bundle install完成安装
2. 配置认证与权限
GA4 使用服务账号认证,步骤如下:
- 从 Google Cloud 控制台创建服务账号,下载 JSON 密钥文件
- 将服务账号邮箱添加到 GA4 媒体资源的用户列表中,授予「查看者」或更高权限
- 在 Rails 项目中加载密钥,示例:
require "google/analytics/data" def ga4_client @ga4_client ||= Google::Analytics::Data::V1beta::AnalyticsData::Client.new do |config| config.credentials = "path/to/your/service-account-key.json" end end
3. 替换数据请求代码
GA4 的 API 逻辑与 UA(Universal Analytics)差异较大,核心是使用 run_report 方法替代原有的 get_ga_data,同时注意以下变化:
- 原 View ID 替换为 GA4 媒体资源ID,格式为
properties/{PROPERTY_ID}(比如properties/2134567890) - UA 的指标前缀
ga:移除,直接使用 GA4 指标名(比如原ga:users改为users) - 数据返回结构不同,需调整获取总计数据的方式
原 UA 代码:
@service.get_ga_data(VIEW_ID, @start_date, @end_date, 'ga:users').totals_for_all_results
迁移后的 GA4 代码:
def get_ga4_users(start_date, end_date, property_id) response = ga4_client.run_report( request: { property: "properties/#{property_id}", date_ranges: [{ start_date: start_date, end_date: end_date }], metrics: [{ name: "users" }] } ) # 获取总计用户数 response.totals.first&.value.to_i end # 调用示例 get_ga4_users(@start_date, @end_date, "2134567890")
关键注意事项
- GA4 的指标、维度命名规则与 UA 不完全一致,需对照官方文档调整(比如原
ga:sessions对应 GA4 的sessions) - 如果需要多个指标或维度,直接在
metrics/dimensions数组中添加对应配置 - 若遇到权限报错,检查服务账号是否已添加到 GA4 媒体资源,且权限配置正确
内容的提问来源于stack exchange,提问作者Manolo
相关产品推荐
相关产品推荐

