使用 Java 在 Google 分析上分页
Pagination on Google Analytics using Java
我正在使用 Java 从 Google Analytics 中提取数据,我正在按照以下示例进行操作:https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-java
我设法提取了我需要的数据,但我不知道如何使用其客户端设置 start-index
。您可以在下面看到我对默认实现所做的更改。我可以设置页面大小,但我找不到如何设置 start-index
.
public GetReportsResponse getReport(String dateStart, String dateEnd) throws IOException {
String[] metricsArr = {"ga:users", "ga:newUsers", "ga:sessions", "ga:totalEvents"};
String[] dimensionsArr = {"ga:eventLabel","ga:eventCategory","ga:eventAction", "ga:country", "ga:countryIsoCode", "ga:dateHourMinute"};
// Create the DateRange object.
DateRange dateRange = new DateRange();
dateRange.setStartDate(dateStart);
dateRange.setEndDate(dateEnd);
// Create the Metrics object.
ArrayList<Metric> metrics = new ArrayList<Metric>();
for(String item : metricsArr){
Metric m = new Metric().setExpression(item).setAlias(item.replace("ga:", ""));
metrics.add(m);
}
ArrayList<Dimension> dimensions = new ArrayList<Dimension>();
for(String item : dimensionsArr){
Dimension d = new Dimension().setName(item);
dimensions.add(d);
}
// Create the ReportRequest object.
ReportRequest request = new ReportRequest()
.setViewId(this.VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setMetrics(metrics)
.setDimensions(dimensions)
.setFiltersExpression("ga:eventCategory=@NOTICE,ga:eventCategory==Document,ga:eventCategory==Document reader")
.setPageSize(10000);
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
requests.add(request);
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
// Call the batchGet method.
GetReportsResponse response = service.reports().batchGet(getReport).execute();
// Return the response.
return response;
}
我怎样才能做到这一点,以便我可以浏览所有页面并提取所有项目?
报告 API V4 使用页面标记。来自报告 API 的回复将 return 下一页的令牌,请参阅请求中的 nextPageToken. Using that you can make the exact same call but updating the pageToken 以及来自上一个回复的 nextpagetoken。请注意,您进行报告的第一个调用 API 不会将页面令牌附加到请求,最后一个页面不会设置 nextpagetoken。
希望对您有所帮助。
我正在使用 Java 从 Google Analytics 中提取数据,我正在按照以下示例进行操作:https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-java
我设法提取了我需要的数据,但我不知道如何使用其客户端设置 start-index
。您可以在下面看到我对默认实现所做的更改。我可以设置页面大小,但我找不到如何设置 start-index
.
public GetReportsResponse getReport(String dateStart, String dateEnd) throws IOException {
String[] metricsArr = {"ga:users", "ga:newUsers", "ga:sessions", "ga:totalEvents"};
String[] dimensionsArr = {"ga:eventLabel","ga:eventCategory","ga:eventAction", "ga:country", "ga:countryIsoCode", "ga:dateHourMinute"};
// Create the DateRange object.
DateRange dateRange = new DateRange();
dateRange.setStartDate(dateStart);
dateRange.setEndDate(dateEnd);
// Create the Metrics object.
ArrayList<Metric> metrics = new ArrayList<Metric>();
for(String item : metricsArr){
Metric m = new Metric().setExpression(item).setAlias(item.replace("ga:", ""));
metrics.add(m);
}
ArrayList<Dimension> dimensions = new ArrayList<Dimension>();
for(String item : dimensionsArr){
Dimension d = new Dimension().setName(item);
dimensions.add(d);
}
// Create the ReportRequest object.
ReportRequest request = new ReportRequest()
.setViewId(this.VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setMetrics(metrics)
.setDimensions(dimensions)
.setFiltersExpression("ga:eventCategory=@NOTICE,ga:eventCategory==Document,ga:eventCategory==Document reader")
.setPageSize(10000);
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
requests.add(request);
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
// Call the batchGet method.
GetReportsResponse response = service.reports().batchGet(getReport).execute();
// Return the response.
return response;
}
我怎样才能做到这一点,以便我可以浏览所有页面并提取所有项目?
报告 API V4 使用页面标记。来自报告 API 的回复将 return 下一页的令牌,请参阅请求中的 nextPageToken. Using that you can make the exact same call but updating the pageToken 以及来自上一个回复的 nextpagetoken。请注意,您进行报告的第一个调用 API 不会将页面令牌附加到请求,最后一个页面不会设置 nextpagetoken。
希望对您有所帮助。