0

Google Java Client Library for Androidを使用してカスタム Adsense レポート ツールを開発しています。認証に成功し、サーバーへの API 呼び出しを行うことができます。しかし、応答を受け取ったときに、それを解析して結果をユーザーに正しく表示する方法がわかりません。

javaDocs によると、AdsenseReportsGenerateResponse.getRows()は List> を生成しますが、それを適切に解析して取得する方法がちょっとわかりません:

-Today's earnings
-Yesterday's earnings
-Last 7 days
-Last month
-From the beginning of time

これが質問に関連する私のコードの一部です

        Reports.Generate request = adsense.reports().generate(startDate, endDate);    

        request.setMetric(Arrays.asList("PAGE_VIEWS", "AD_REQUESTS", "AD_REQUESTS_COVERAGE", "CLICKS",
                "AD_REQUESTS_CTR", "COST_PER_CLICK", "AD_REQUESTS_RPM", "EARNINGS"));

        request.setDimension(Arrays.asList("DATE", "WEEK", "MONTH"));    
        request.setSort(Arrays.asList("+DATE"));

        AdsenseReportsGenerateResponse response = request.execute();

        //TODO: Here be dragons
        response.getRows();

編集: getRow()について言及している javaDoc は次のとおりです。

うーん、このサイトの誰も助けてくれないようです?!

4

2 に答える 2

2

次のサンプル コードが役立ちます: http://code.google.com/p/google-api-java-client/wiki/APIs#AdSense_Management_API

つまり、これはあなたが興味を持っているファイルです: http://code.google.com/p/google-api-java-client/source/browse/adsense-cmdline-sample/src/main/java/com/ google/api/services/samples/adsense/cmdline/GenerateReport.java?repo=samples

出力を印刷するコードのスニペットを次に示します。これはコマンド ライン アプリケーション用ですが、簡単に変更できるはずです。

if ((response.getRows() != null) && !response.getRows().isEmpty()) {
  // Display headers.
  for (AdsenseReportsGenerateResponseHeaders header : response.getHeaders()) {
    System.out.printf("%25s", header.getName());
  }
  System.out.println();

  // Display results.
  for (List<String> row : response.getRows()) {
    for (String column : row) {
      System.out.printf("%25s", column);
    }
    System.out.println();
    }

  System.out.println();
} else {
  System.out.println("No rows returned.");
}

さまざまな期間のデータを取得する場合は、すべてを 1 つに詰め込むのではなく、さまざまなレポートを実行する必要があります。開始日と終了日が異なるためです。仕組みは次のとおりです。

  • 今日の収益: 開始日と終了日を今日に設定し、ディメンション リストを DATE に設定します
  • 昨日の収益: 開始日と終了日を昨日に設定し、ディメンション リストを DATE に設定します
  • 過去 7 日間: 1 日あたりのデータが必要な場合は、開始日を 7 日前、終了日を今日、ディメンション リストを DATE に設定します。WEEK と MONTH は過去 7 日間ではなく暦週と月を参照するため、統計を集計する場合は、これを自分で計算する必要がある場合があります。
  • 先月: 開始日は先月 1 日、終了日は月末日、ディメンション MONTH。
  • いつも: これをどのように集計しますか? 毎月?次に、開始日をたとえば 1980 年 1 月 1 日、終了日を今日、ディメンションを MONTH に設定します。

このブログ投稿は、レポートの概念をよりよく理解するのに役立ちます: http://adsenseapi.blogspot.com/2011/11/adsense-management-api-diving-into.html

他にサポートが必要な場合はお知らせください。

于 2012-01-12T09:18:04.107 に答える
2

List<List>私がAPIを理解している限りではありません。これを試して:

String[][] array = response.getRows();

for (int i = 0; i < array.getSize(); i++){

    String dimension = array[i][0];
    String metric = array[i][1];

    //Do what you want with them

}

私がこれを書いているのは、私が理解している限り、API には、文字列に 1 つの値とメトリックに 1 つの値を持つディメンションのリストがあると言われているためです。

各行に複数のセルが予想される場合 (API がそのように機能しないと私は信じています)、内部に別のセルを追加して、おそらく次のような方法で現在のリストのサイズを取得する必要があります。array[i].getSize()

役に立たない場合は、返信してください。

編集:わかりました。これを試して:

List list = response.getRows();

for (int i = 0; i < list.size(); i++){

List<String> list2 = list.get(i);

for (int j = 0; j < list2.size(); j++){
String value = list2.get(j);
//Do what you want
}

}
于 2012-01-08T17:25:29.310 に答える