Để truy xuất dữ liệu từ Google Analytics, bạn có thể sử dụng trang web https://ga-dev-tools.google/ga4/query-explorer/ để thực hiện các truy vấn. Trên trang web này, bạn sẽ tìm thấy một liên kết đến tài liệu runReport của Google Analytics Data API (GA4) tại https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport. Hiện tại, gem 'google-api-client'
không hỗ trợ POST https://analyticsdata.googleapis.com/v1beta/{property=properties/*}:runReport
mà chỉ hỗ trợ v1alpha
. Tuy nhiên, tôi sẽ trình bày cách lấy Dữ liệu Google Analytics mà vẫn sử dụng 'google-api-client'.
Trong hướng dẫn này, tôi khai báo hai biến môi trường trong tệp .env.
ANALYTICS_DATA_CREDENTIALS="config/vulehuan-ga.json"
Để tạo tập tin service, bạn có thể sử dụng code sau cho
GA4_PROPERTY_ID="307325329"app/services/my_analytics_data_service.rb
:
# frozen_string_literal: true
require 'google/apis/analyticsdata_v1alpha'
class MyAnalyticsDataService < Google::Apis::AnalyticsdataV1alpha::AnalyticsDataService
def run_report(run_report_request_object = nil, fields: nil, quota_user: nil, options: nil, &block)
command = make_simple_command(:post, "v1beta/properties/#{ENV['GA4_PROPERTY_ID']}:runReport", options)
command.request_representation = Google::Apis::AnalyticsdataV1alpha::RunReportRequest::Representation
command.request_object = run_report_request_object
command.response_representation = Google::Apis::AnalyticsdataV1alpha::RunReportResponse::Representation
command.response_class = Google::Apis::AnalyticsdataV1alpha::RunReportResponse
command.query['fields'] = fields unless fields.nil?
command.query['quotaUser'] = quota_user unless quota_user.nil?
execute_or_queue_command(command, &block)
end
end
Tập tin này chỉ thay đổi đường dẫn API trong hàm run_report
của Google::Apis::AnalyticsdataV1alpha::AnalyticsDataService
thành v1beta/properties/#{ENV['GA4_PROPERTY_ID']}:runReport
.
Code mẫu bên dưới truy xuất số lượt xem trang trong vòng 28 ngày và lưu code đó vào bảng google_analytic_reports. Tùy thuộc vào nhu cầu của bạn, bạn có thể sửa đổi code cho phù hợp. Vui lòng test tại https://ga-dev-tools.google/ga4/query-explorer/ trước khi viết code. Khi test, bạn sẽ nhận được các giá trị để nhập vào code, chẳng hạn như metrics screenPageViews
, order_bys với loại ALPHANUMERIC
và dimensions date
. Chỉ cần test trên https://ga-dev-tools.google/ga4/query-explorer/, chọn truy vấn thích hợp, xem dữ liệu nào có sẵn và cập nhật code của bạn cho phù hợp.
# Set up authentication
scopes = [Google::Apis::AnalyticsdataV1alpha::AUTH_ANALYTICS_READONLY]
credentials = Google::Auth::ServiceAccountCredentials.make_creds(
json_key_io: File.open("#{Rails.root}/#{ENV['ANALYTICS_DATA_CREDENTIALS']}"),
scope: scopes
)
client = MyAnalyticsDataService.new
client.authorization = credentials
# Set the date range for the report
end_date = Date.today.prev_day # Set the end date to yesterday
start_date = end_date - 27 # Set the start date to 28 days ago
# Build the request https://ga-dev-tools.google/ga4/query-explorer/ OR https://ga-dev-tools.google/query-explorer/
request = Google::Apis::AnalyticsdataV1alpha::RunReportRequest.new(
dimensions: [Google::Apis::AnalyticsdataV1alpha::Dimension.new(name: 'date')],
metrics: [
Google::Apis::AnalyticsdataV1alpha::Metric.new(
name: 'screenPageViews',
)
],
date_ranges: [
Google::Apis::AnalyticsdataV1alpha::DateRange.new(
start_date: start_date.strftime('%Y-%m-%d'),
end_date: end_date.strftime('%Y-%m-%d')
)
],
order_bys: [
Google::Apis::AnalyticsdataV1alpha::OrderBy.new(
dimension: Google::Apis::AnalyticsdataV1alpha::DimensionOrderBy.new(dimension_name: 'date', order_type: 'ALPHANUMERIC'),
desc: false
)
]
)
response = client.run_report(request)
GoogleAnalyticReport.create(
response.rows.map do |row|
date = Date.strptime(row.dimension_values.first.value, '%Y%m%d')
sessions = row.metric_values.first.value.to_i
{ report_date: date, total_views: sessions }
end
)
Trong đoạn code trên, tôi sử dụng client = MyAnalyticsDataService.new.
Như đã đề cập ở trên, MyAnalyticsDataService
ghi đè hàm run_report
với ý định gọi POST https://analyticsdata.googleapis.com/v1beta/{property=properties/*}:runReport
và nhận dữ liệu kết quả.
Tiếp theo, tôi sẽ cung cấp hướng dẫn về cách tạo tệp JSON hoặc lấy giá trị của ID thuộc tính GA4 (hai biến môi trường được đề cập ở phần đầu của hướng dẫn này).
ANALYTICS_DATA_CREDENTIALS="config/vulehuan-ga.json"
GA4_PROPERTY_ID="307325329"
ANALYTICS_DATA_CREDENTIALS là đường dẫn đến tệp JSON được tạo từ Google Console. Trong code, json_key_io: File.open("#{Rails.root}/#{ENV['ANALYTICS_DATA_CREDENTIALS']}"),
tôi đã sử dụng Rails.root
và đặt tệp JSON vào thư mục config. Bạn có thể sửa đổi cả biến môi trường và code json_key_io
cho phù hợp.
Để tạo tệp JSON ở trên, hãy mở trang https://developers.google.com/analytics/devguides/reporting/data/v1/quickstart-client-libraries và chọn 'Enable the Google Analytics Data API v1'. Làm theo các bước được cung cấp và trong hộp thoại kết quả, hãy nhấp vào DOWNLOAD CLIENT CONFIGURATION và lưu tệp credentials.json vào thư mục làm việc của bạn.
Sử dụng trình soạn thảo văn bản, mở tệp credentials.json mà bạn đã tải xuống ở bước trước và tìm kiếm trường client_email để lấy địa chỉ email của tài khoản dịch vụ. Nó sẽ trông giống như [email protected]
. Sử dụng địa chỉ email này để thêm người dùng vào thuộc tính Google Analytics 4 mà bạn muốn truy cập qua API dữ liệu Google Analytics v1. Đối với hướng dẫn này, chỉ cần có quyền Viewer.
Bạn có thể lấy GA4_PROPERTY_ID giống như ảnh chụp màn hình bên dưới:
Tóm lại, việc truy xuất dữ liệu từ Google Analytics có thể được thực hiện bằng cách sử dụng trang web https://ga-dev-tools.google/ga4/query-explorer/ để thực hiện các truy vấn. Mặc dù gem 'google-api-client'
hiện chỉ hỗ trợ v1alpha
chứ không hỗ trợ POST https://analyticsdata.googleapis.com/v1beta/{property=properties /*}:runReport
, chúng ta vẫn có thể lấy dữ liệu Google Analytics bằng cách ghi đè hàm run_report
của Google::Apis::AnalyticsdataV1alpha::AnalyticsDataService
thành v1beta/properties/#{ENV['GA4_PROPERTY_ID']}:runReport
. Bằng cách khai báo các biến môi trường trong tệp .env và sử dụng code được cung cấp, chúng ta có thể truy xuất dữ liệu mong muốn và lưu dữ liệu đó vào cơ sở dữ liệu của mình. Để có được thông tin đăng nhập cần thiết, hãy làm theo các bước được cung cấp trong hướng dẫn và kiểm tra truy vấn trên https://ga-dev-tools.google/ga4/query-explorer/ trước khi viết code.