如何在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认证
- 登录Google Cloud控制台,创建服务账号并下载JSON密钥文件,将文件放置在项目资源目录下(如
src/main/resources/ga-service-account.json)。 - 在
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
相关产品推荐
相关产品推荐

