0

我正在使用适用于Android的Google Java Client Library开发自定义 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

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 说它有一个维度列表,据我了解,其中一个值用于字符串,一个值用于度量。

如果您希望每行有几个单元格(我相信 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 回答
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.");
}

至于获取不同时间段的数据,您可能应该运行不同的报告,而不是将它们全部塞进一份,因为这需要不同的开始日期和结束日期。以下是它的工作原理:

  • 今日收益:将开始和结束日期设置为今天,将维度列表设置为仅 DATE
  • 昨天的收益:将开始和结束日期设置为昨天,将维度列表设置为仅 DATE
  • 过去 7 天:如果您需要每天的数据,则将开始日期设置为 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 回答