Halo Analytics Reporting API v4; Panduan memulai Java untuk akun layanan

Tutorial ini membahas 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 menyelesaikan pembuatan project di Konsol API Google, mengaktifkan API, dan membuat kredensial.

Buat kredensial

  1. Buka halaman Akun layanan. Jika diminta, pilih sebuah project.
  2. Klik Buat Akun Layanan, masukkan nama dan deskripsi untuk akun layanan. Anda dapat menggunakan ID akun layanan default, atau memilih ID yang berbeda dan unik. Setelah selesai, klik Buat.
  3. Bagian Izin akun layanan (opsional) yang ditampilkan setelahnya tidak diperlukan. Klik Lanjutkan.
  4. Pada layar Beri pengguna akses ke akun layanan ini, scroll ke bawah ke bagian Buat kunci. Klik Buat kunci.
  5. Di panel samping yang muncul, pilih format untuk kunci Anda: JSON direkomendasikan.
  6. Klik Create. Pasangan kunci umum/pribadi baru Anda dibuat dan didownload ke komputer, dan berfungsi sebagai satu-satunya salinan dari kunci ini. Untuk informasi cara menyimpannya dengan aman, lihat Mengelola kunci akun layanan.
  7. Klik Tutup pada dialog Kunci pribadi disimpan ke komputer Anda, lalu klik Selesai untuk kembali ke tabel akun layanan.

Menambahkan akun layanan ke akun Google Analytics

Akun layanan yang baru dibuat akan memiliki alamat email yang terlihat seperti:

quickstart@PROJECT-ID.iam.gserviceaccount.com

Gunakan alamat email ini untuk menambahkan pengguna ke tampilan Google Analytics yang ingin Anda akses melalui API. Tutorial ini hanya memerlukan izin Baca & Analisis.

2. Menginstal library klien

Untuk menginstal Klien Java Google Analytics API, Anda harus mendownload file zip yang berisi semua jar yang perlu Anda ekstrak dan salin ke classpath Java.

  1. Download library Klien Analytics Analytics v4 Java Client, 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 guna mengetahui petunjuk tentang cara menambahkan JAR ke classpath project.

Kacang Bersih

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

IntelliJ IDEA

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

Command line

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

-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 sebelumnya didownload ke direktori yang sama dengan kode contoh.
  • Ganti nilai KEY_FILE_LOCATION dengan nilai yang sesuai dari Konsol Developer.
  • Ganti nilai VIEW_ID dengan ID tampilan yang ingin Anda akses.
import com.google.api.client.googleapis.auth.oauth2.GoogleCredential;
import com.google.api.client.googleapis.javanet.GoogleNetHttpTransport;
import com.google.api.client.http.HttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.gson.GsonFactory;

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

import com.google.api.services.analyticsreporting.v4.AnalyticsReportingScopes;
import com.google.api.services.analyticsreporting.v4.AnalyticsReporting;

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

public class HelloAnalyticsReporting {
  private static final String APPLICATION_NAME = "Hello Analytics Reporting";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  private static final String VIEW_ID = "<REPLACE_WITH_VIEW_ID>";
  public static void main(String[] args) {
    try {
      AnalyticsReporting service = initializeAnalyticsReporting();

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

  /**
   * Initializes an Analytics Reporting API V4 service object.
   *
   * @return An authorized Analytics Reporting API V4 service object.
   * @throws IOException
   * @throws GeneralSecurityException
   */
  private static AnalyticsReporting initializeAnalyticsReporting() throws GeneralSecurityException, IOException {

    HttpTransport httpTransport = GoogleNetHttpTransport.newTrustedTransport();
    GoogleCredential credential = GoogleCredential
        .fromStream(new FileInputStream(KEY_FILE_LOCATION))
        .createScoped(AnalyticsReportingScopes.all());

    // Construct the Analytics Reporting service object.
    return new AnalyticsReporting.Builder(httpTransport, JSON_FACTORY, credential)
        .setApplicationName(APPLICATION_NAME).build();
  }

  /**
   * Queries the Analytics Reporting API V4.
   *
   * @param service An authorized Analytics Reporting API V4 service object.
   * @return GetReportResponse The Analytics Reporting API V4 response.
   * @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");

    Dimension pageTitle = new Dimension().setName("ga:pageTitle");

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

    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 An 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 eksekusi default yang ditetapkan ke class HelloAnalytics. Jika tidak, Anda dapat mengompilasi dan menjalankan aplikasi dari command line:

  • Kompilasikan sampel menggunakan:

    javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
    
  • Jalankan contoh menggunakan:

    java -classpath '.:/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting
    

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