반응형
자바에서 Google Analytics Reporting API 사용 시
여러 Metric / Dimension 을 사용하려 하는 경우
ReportRequest 객체를 넘길 때
set~.(List<Metric / Dimension> 형태로
Metrics / Dimensions를 넣어주기 때문에
List 안에 Metric / Dimension 객체를 넣어놓은 뒤
그걸 setMetrics/Dimensions 로 사용해주면
Response 를 받을 경우 위 이미지와 같이
여러 Metric / Dimension을 받을 수 있게 된다
예제에 사용한 전체 코드는 아래와 같다
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting;
import com.google.api.services.analyticsreporting.v4.model.*;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@RestController
@RequestMapping("/search")
public class SearchPageviews {
@GetMapping("searchTotalPageviews")
public void SearchTotalPageviews() throws IOException {
// 날짜 범위 설정
DateRange dateRange = new DateRange();
dateRange.setStartDate("7DaysAgo");
dateRange.setEndDate("today");
// Metrics(조회할 컬럼) 객체 생성
Metric pageviews = new Metric().setExpression("ga:pageviews")
.setAlias("pageviews");
Metric newUsers = new Metric().setExpression("ga:newUsers")
.setAlias("newUsers");
// 여러 Metrics를 사용할 경우
List<Metric> MetricList = new ArrayList<>();
MetricList.add(pageviews);
MetricList.add(newUsers);
Dimension pageTitle = new Dimension().setName("ga:pageTitle");
List<OrderBy> orderBys = new ArrayList<>();
OrderBy orderBy = new OrderBy().setFieldName("pageviews")
.setSortOrder("ascending");
orderBys.add(orderBy);
// ReportRequest 객체 생성.
ReportRequest request = new ReportRequest().setViewId(AnalyticsConnection.VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setMetrics(MetricList)
.setDimensions(Arrays.asList(pageTitle))
.setOrderBys(orderBys);
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
requests.add(request);
// GetReportsRequest 객체 생성
GetReportsRequest getReport = new GetReportsRequest().setReportRequests(requests);
// batchGet 메소드 생성해서 response 받아오기
GetReportsResponse response = AnalyticsConnection.service.reports().batchGet(getReport).execute();
// response 콘솔에 출력
printResponse(response);
}
// 결과 출력
public static void printResponse(GetReportsResponse response) {
for (Report report: response.getReports()) {
ColumnHeader header = report.getColumnHeader();
List<String> dimensionHeaders = header.getDimensions();
List<MetricHeaderEntry> metricHeaders = header.getMetricHeader().getMetricHeaderEntries();
List<ReportRow> rows = report.getData().getRows();
if (rows == null) {
System.out.println("No data found for " + AnalyticsConnection.VIEW_ID);
return;
}
for (ReportRow row: rows) {
List<String> dimensions = row.getDimensions();
List<DateRangeValues> metrics = row.getMetrics();
for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
}
for (int j = 0; j < metrics.size(); j++) {
System.out.println("Date Range (" + j + "): ");
DateRangeValues values = metrics.get(j);
for (int k = 0; k < values.getValues().size() && k < metricHeaders.size(); k++) {
System.out.println(metricHeaders.get(k).getName() + ": " + values.getValues().get(k));
}
}
}
}
}
}
반응형
'Tools > Google Analytics API' 카테고리의 다른 글
구글 애널리틱스 ga:adsenseRevenue can only be queried under certain conditions 해결방법 (0) | 2021.11.26 |
---|---|
구글 애널리틱스 API 조회 건수 제한 방법 (0) | 2021.11.12 |
구글 애널리틱스 API 전체 Metric / Dimension 리스트 (0) | 2021.11.11 |
구글 애널리틱스 API 조회결과 정렬(OrderBy) 사용방법 (0) | 2021.11.11 |
구글 애널리틱스 API 자바 연결방법 정리글 (1) | 2021.11.09 |
댓글