You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spring Boot应用中调用Google Analytics获取书籍浏览量?

Spring Boot整合Google Analytics 4获取书籍浏览量实现方案

一、添加依赖

使用Google官方的GA4 Data API客户端库,在pom.xml中添加以下依赖:

<dependency>
    <groupId>com.google.analytics</groupId>
    <artifactId>google-analytics-data</artifactId>
    <version>0.32.0</version> <!-- 使用最新稳定版本 -->
</dependency>
<dependency>
    <groupId>com.google.auth</groupId>
    <artifactId>google-auth-library-oauth2-http</artifactId>
    <version>1.20.0</version>
</dependency>

二、配置Google认证

  1. 登录Google Cloud控制台,创建服务账号并下载JSON密钥文件,将文件放置在项目资源目录下(如src/main/resources/ga-service-account.json)。
  2. 在application.yml中配置密钥路径和GA4属性ID:
google:
  analytics:
    property-id: "你的GA4属性ID(格式:2XXXXXXX)"
    credentials-path: "classpath:ga-service-account.json"

三、实现AnalyticsService

import com.google.analytics.data.v1beta.BetaAnalyticsDataClient;
import com.google.analytics.data.v1beta.DateRange;
import com.google.analytics.data.v1beta.Dimension;
import com.google.analytics.data.v1beta.Metric;
import com.google.analytics.data.v1beta.RunReportRequest;
import com.google.analytics.data.v1beta.RunReportResponse;
import com.google.auth.oauth2.GoogleCredentials;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;

import java.io.FileInputStream;
import java.io.IOException;

@Service
public class AnalyticsService {

    private final BetaAnalyticsDataClient analyticsDataClient;
    private final String propertyId;

    public AnalyticsService(@Value("${google.analytics.property-id}") String propertyId,
                           @Value("${google.analytics.credentials-path}") String credentialsPath) throws IOException {
        this.propertyId = propertyId;
        // 初始化GA4客户端
        GoogleCredentials credentials = GoogleCredentials.fromStream(new FileInputStream(credentialsPath.replace("classpath:", "")))
                .createScoped("https://www.googleapis.com/auth/analytics.readonly");
        this.analyticsDataClient = BetaAnalyticsDataClient.create(BetaAnalyticsDataClient.newBuilder()
                .setCredentialsProvider(() -> credentials)
                .build());
    }

    public Long receiveDataFromAnalytics(String bookSlug) {
        // 构建GA4报表请求:统计包含目标slug的页面总浏览量
        RunReportRequest request = RunReportRequest.newBuilder()
                .setProperty("properties/" + propertyId)
                .addDimensions(Dimension.newBuilder().setName("pagePath"))
                .addMetrics(Metric.newBuilder().setName("screenPageViews"))
                .addDateRanges(DateRange.newBuilder().setStartDate("2020-01-01").setEndDate("today")) // 自定义时间范围
                .addDimensionFilters(
                        com.google.analytics.data.v1beta.FilterExpression.newBuilder()
                                .setFilter(com.google.analytics.data.v1beta.Filter.newBuilder()
                                        .setFieldName("pagePath")
                                        .setStringFilter(com.google.analytics.data.v1beta.StringFilter.newBuilder()
                                                .setMatchType(com.google.analytics.data.v1beta.StringFilter.MatchType.CONTAINS)
                                                .setValue(bookSlug))))
                .build();

        try {
            RunReportResponse response = analyticsDataClient.runReport(request);
            // 提取总浏览量,若无数据返回0
            if (!response.getRowsList().isEmpty()) {
                return Long.parseLong(response.getRows(0).getMetricValues(0).getValue());
            }
            return 0L;
        } catch (Exception e) {
            // 处理异常,如日志记录、返回默认值等
            e.printStackTrace();
            return 0L;
        }
    }
}

四、关键说明

  • GA4维度与指标:示例中使用pagePath维度筛选包含书籍slug的页面,screenPageViews指标统计浏览量,需确保你的GA4配置中已正确跟踪页面浏览事件。
  • 时间范围:可根据需求调整DateRange的起止日期,比如设置为书籍发布日期到今日。
  • 异常处理:实际项目中建议替换printStackTrace()为日志框架记录异常,避免暴露敏感信息。
  • 权限配置:需确保服务账号拥有GA4属性的“查看者”权限,否则会出现认证错误。

五、最新资料获取

  • 直接查阅Google官方文档,搜索“Google Analytics Data API Java Client”即可找到最新的使用指南与示例
  • 关注Google Cloud官方GitHub仓库,客户端库的示例代码会持续同步更新

内容的提问来源于stack exchange,提问作者Giovane Neves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 11:57:46