Halo Analytics Reporting API v4; panduan memulai Java untuk aplikasi terinstal

Tutorial ini akan memandu langkah-langkah yang diperlukan untuk mengakses Analytics Reporting API v4.

1. Mengaktifkan API

Untuk mulai menggunakan Analytics Reporting API v4, Anda harus menggunakan alat penyiapan terlebih dahulu, yang memandu Anda membuat project di Konsol API Google, mengaktifkan API, dan membuat kredensial.

Catatan: Untuk membuat Client ID Web atau Klien Aplikasi Terinstal, Anda harus menetapkan nama produk di layar izin. Jika belum melakukannya, Anda akan diminta untuk Mengonfigurasi layar izin.

Buat kredensial

  • Buka halaman Credentials.
  • Klik Buat kredensial dan pilih Client ID OAuth
  • Untuk Application type, pilih Other.
  • Beri nama client ID quickstart, lalu klik quickstart.

Dari halaman Credentials, klik client ID yang baru dibuat, lalu klik Download JSON dan simpan sebagai client_secrets.json; Anda akan membutuhkannya nanti dalam tutorial.

2. Menginstal library klien

Untuk menginstal Klien Java Google Analytics API, Anda harus mendownload file ZIP yang berisi semua jar yang perlu diekstrak dan disalin ke classpath Java.

  1. Download library Klien Java Analytics Reporting API v4, yang dipaketkan sebagai file ZIP dengan semua dependensi yang diperlukan.
  2. Ekstrak file ZIP.
  3. Tambahkan semua JAR dalam direktori libs ke classpath Anda.
  4. Tambahkan jar google-api-services-analyticsreporting-v4-[version].jar ke classpath Anda.

Detail lingkungan Java

Eclipse

Untuk Eclipse, lihat pertanyaan StackOverflow ini untuk mengetahui petunjuk tentang cara menambahkan JAR ke classpath project Anda.

NetBeans

Untuk NetBeans, lihat pertanyaan StackOverflow ini untuk mendapatkan petunjuk tentang cara menambahkan JAR ke classpath project Anda.

IntelliJ IDEA

Untuk IntelliJ IDEA, lihat pertanyaan StackOverflow ini guna mengetahui petunjuk tentang cara menambahkan JAR ke classpath project Anda.

Command line

Jika mengembangkan dari command line, tambahkan berikut ini ke pemanggilan perintah javac dan java:

-classpath /path/to/directory/with/unzipped/jars

3. Menyiapkan contoh

Anda harus membuat satu file bernama HelloAnalyticsReporting.java, yang akan berisi kode contoh yang diberikan.

  • Salin atau download kode sumber berikut ke HelloAnalyticsReporting.java.
  • Pindahkan client_secrets.json yang telah didownload sebelumnya ke direktori yang sama dengan kode contoh.
  • Ganti nilai VIEW_ID dengan ID tampilan yang ingin Anda akses.
import com.google.api.client.auth.oauth2.Credential;
import com.google.api.client.extensions.java6.auth.oauth2.AuthorizationCodeInstalledApp;
import com.google.api.client.extensions.jetty.auth.oauth2.LocalServerReceiver;
import com.google.api.client.googleapis.auth.oauth2.GoogleAuthorizationCodeFlow;
import com.google.api.client.googleapis.auth.oauth2.GoogleClientSecrets;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;

import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import com.google.analyticsreporting.v4.AnalyticsreportingScopes;
import com.google.analyticsreporting.v4.Analyticsreporting;
import com.google.analyticsreporting.v4.model.ColumnHeader;
import com.google.analyticsreporting.v4.model.DateRange;
import com.google.analyticsreporting.v4.model.DateRangeValues;
import com.google.analyticsreporting.v4.model.Dimension;
import com.google.analyticsreporting.v4.model.GetReportsRequest;
import com.google.analyticsreporting.v4.model.GetReportsResponse;
import com.google.analyticsreporting.v4.model.Metric;
import com.google.analyticsreporting.v4.model.MetricHeaderEntry;
import com.google.analyticsreporting.v4.model.Report;
import com.google.analyticsreporting.v4.model.ReportRequest;
import com.google.analyticsreporting.v4.model.ReportRow;


/**
 * A simple example of how to access the Google Analytics API.
 */
public class HelloAnalytics {
  // Path to client_secrets.json file downloaded from the Developer's Console.
  // The path is relative to HelloAnalytics.java.
  private static final String CLIENT_SECRET_JSON_RESOURCE = "client_secrets.json";

  // Replace with your view ID.
  private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>";

  // The directory where the user's credentials will be stored.
  private static final File DATA_STORE_DIR = new File(
      System.getProperty("user.home"), ".store/hello_analytics");

  private static final String APPLICATION_NAME = "Hello Analytics Reporting";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static NetHttpTransport httpTransport;
  private static FileDataStoreFactory dataStoreFactory;

  public static void main(String[] args) {
    try {
      Analyticsreporting service = initializeAnalyticsReporting();

      GetReportsResponse response = getReport(service);
      printResponse(response);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }


  /**
   * Initializes an authorized Analytics Reporting service object.
   *
   * @return The analytics reporting service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static Analyticsreporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException {

    httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    dataStoreFactory = new FileDataStoreFactory(DATA_STORE_DIR);

    // Load client secrets.
    GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY,
        new InputStreamReader(HelloAnalytics.class
            .getResourceAsStream(CLIENT_SECRET_JSON_RESOURCE)));

    // Set up authorization code flow for all authorization scopes.
    GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow
        .Builder(httpTransport, JSON_FACTORY, clientSecrets,
            AnalyticsreportingScopes.all()).setDataStoreFactory(dataStoreFactory)
        .build();

    // Authorize.
    Credential credential = new AuthorizationCodeInstalledApp(flow,
        new LocalServerReceiver()).authorize("user");
    // Construct the Analytics Reporting service object.
    return new Analyticsreporting.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  /**
   * Query the Analytics Reporting API V4.
   * Constructs a request for the sessions for the past seven days.
   * Returns the API response.
   *
   * @param service
   * @return GetReportResponse
   * @throws IOException
   */
  private static GetReportsResponse getReport(Analyticsreporting service) throws IOException {
    // Create the DateRange object.
    DateRange dateRange = new DateRange();
    dateRange.setStartDate("7DaysAgo");
    dateRange.setEndDate("today");

    // Create the Metrics object.
    Metric sessions = new Metric()
        .setExpression("ga:sessions")
        .setAlias("sessions");

    //Create the Dimensions object.
    Dimension browser = new Dimension()
        .setName("ga:browser");

    // Create the ReportRequest object.
    ReportRequest request = new ReportRequest()
        .setViewId(VIEW_ID)
        .setDateRanges(Arrays.asList(dateRange))
        .setDimensions(Arrays.asList(browser))
        .setMetrics(Arrays.asList(sessions));

    ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
    requests.add(request);

    // Create the GetReportsRequest object.
    GetReportsRequest getReport = new GetReportsRequest()
        .setReportRequests(requests);

    // Call the batchGet method.
    GetReportsResponse response = service.reports().batchGet(getReport).execute();

    // Return the response.
    return response;
  }

  /**
   * Parses and prints the Analytics Reporting API V4 response.
   *
   * @param response the Analytics Reporting API V4 response.
   */
  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();
        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.print("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));
          }
        }
      }
    }
  }
}

4. Menjalankan contoh

Jika menggunakan IDE, pastikan Anda memiliki target run default yang ditetapkan ke class HelloAnalytics.

  • Aplikasi ini akan memuat halaman otorisasi di browser.
  • Jika belum login ke Akun Google, Anda akan diminta untuk login. Jika login ke beberapa Akun Google, Anda akan diminta untuk memilih satu akun yang akan digunakan untuk otorisasi.

Setelah Anda menyelesaikan langkah-langkah ini, contoh akan menghasilkan jumlah sesi selama tujuh hari terakhir untuk tampilan tertentu.