Reporting API V4 Javaクラスから複数の指標を抽出します。以下の機能に、ディメンションと指標の名前:例としてGoogle Analytics Reporting API V4(Java)から複数の指標を抽出できません
private static ReportRequest createComplexRequest(java.lang.String startDate,java.lang.String endDate,ArrayList<java.lang.String> metrics,ArrayList<java.lang.String> dimensions, String pageToken){
DateRange dateRange = new DateRange();
dateRange.setStartDate(startDate);
dateRange.setEndDate(endDate);
//Create the Metric object ArrayList
int metricsSize=metrics.size();
Metric[] metricsArray = new Metric[metricsSize];
for(int i=0;i<metricsSize;i++){
Metric metric = new Metric()
.setExpression("ga:"+metrics.get(i))
.setAlias(metrics.get(i));
metricsArray[i]=metric;
}
int dimensionsSize=dimensions.size();
Dimension[] dimensionsArray = new Dimension[dimensionsSize];
for(int i=0;i<dimensionsSize;i++){
Dimension dimension = new Dimension()
.setName("ga:"+dimensions.get(i));
dimensionsArray[i]=dimension;
}
ReportRequest request = new ReportRequest()
.setViewId(VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setDimensions(Arrays.asList(dimensionsArray))
.setMetrics(Arrays.asList(metricsArray))
.setPageToken(pageToken)
.setPageSize(10000);
return request;
}
、私は「セッション」と「バウンス」のメトリックを抽出しようとしている:私は「GA」の機能「メイン」から渡します。このケースのトラブルシューティング中に、metricHeaders.size()は2(メトリクスと同じくらい)ですが、row.getMetrics()は1つ(「セッション」メトリック)のみを返します。以下は私が意味するものです。私は意図的に問題を明らかにし、次の問題の印刷機能を作成しました:
private 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 " + VIEW_ID);
return;
}
for (ReportRow row: rows) {
List<String> dimensions = row.getDimensions();
List<DateRangeValues> metrics = row.getMetrics();
System.out.println("Metrics size:"+metrics.size());
for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) {
System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i));
}
for(int l = 0;l<metricHeaders.size();l++)
{
System.out.println(metricHeaders.get(l).getName());
DateRangeValues values = metrics.get(l);
}
}
}
}
metricHeaders.size()が2であるが、メトリックは、メトリックだけでメトリック「セッション」のリストであるため、上記の機能を押しつぶします!だから私は得る:
java.lang.IndexOutOfBoundsException: Index: 1, Size: 1
これはなぜ起こるか考えていますか?助けてください!!
どうもありがとうStergiosを!確かに、それはGoogleのコード問題でした。 HelloAnalytics.javaの例では、構文上の問題も多くあります。たとえば、インポートされたすべてのJavaライブラリは "com.google.api.services.analyticsreporting.v4"です。 「com.google.analyticsreporting.v4」ではなく! –