1

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 

これはなぜ起こるか考えていますか?助けてください!!

答えて

1

GA開発者ガイドのサンプルprintResponse()メソッドにはいくつかのエラーがあります。

代わりに次のコードを試してみてください。

private static void printResponseCustom(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()); 
     System.out.println("Metrics headers:"+metricHeaders.size());   
     for (int i = 0; i < dimensionHeaders.size() && i < dimensions.size(); i++) { 
     System.out.println(dimensionHeaders.get(i) + ": " + dimensions.get(i)); 
     } 

     int k = 0; 
     for (int j = 0; j < metricHeaders.size() && j < metrics.size(); 
      DateRangeValues values = metrics.get(j); 
      for (String value : values.getValues()) { 
       MetricHeaderEntry entry = metricHeaders.get(k); 
       System.out.println(entry.getName() + ": " + value); 
       k++; 
      }  
     } 
    } 
    } 
} 
+0

どうもありがとうStergiosを!確かに、それはGoogleのコード問題でした。 HelloAnalytics.javaの例では、構文上の問題も多くあります。たとえば、インポートされたすべてのJavaライブラリは "com.google.api.services.analyticsreporting.v4"です。 「com.google.analyticsreporting.v4」ではなく! –

関連する問題