Hello Analytics API: Panduan memulai Java untuk akun layanan

Tutorial ini akan memandu langkah-langkah yang diperlukan untuk mengakses akun Google Analytics, membuat kueri Analytics API, menangani respons API, dan menampilkan hasilnya. Core Reporting API v3.0, Management API v3.0, dan OAuth2.0 digunakan dalam tutorial ini.

Langkah 1: Aktifkan Analytics API

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

Membuat client ID

  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.

Tambahkan akun layanan ke akun Google Analytics

Akun layanan yang baru dibuat akan memiliki alamat email, <projectId>-<uniqueId>@developer.gserviceaccount.com; Gunakan alamat email ini untuk menambahkan pengguna ke akun Google Analytics yang ingin Anda akses melalui API. Untuk tutorial ini, hanya izin Baca & Analisis yang diperlukan.

Langkah 2: Instal Library Klien Google

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 Google Analytics, 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-analytics-v3-[version].jar ke classpath Anda.

Langkah 3: Siapkan contoh

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

  1. Salin atau download kode sumber berikut ke HelloAnalytics.java.
  2. Pindahkan client_secrets.JSON yang telah didownload sebelumnya ke dalam direktori yang sama dengan kode contoh.
  3. Ganti nilai KEY_FILE_LOCATION dengan nilai yang sesuai dari Konsol Play.
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 com.google.api.services.analytics.Analytics;
import com.google.api.services.analytics.AnalyticsScopes;
import com.google.api.services.analytics.model.Accounts;
import com.google.api.services.analytics.model.GaData;
import com.google.api.services.analytics.model.Profiles;
import com.google.api.services.analytics.model.Webproperties;

import java.io.FileInputStream;
import java.io.IOException;
import java.security.GeneralSecurityException;
import java.io.IOException;


/**
 * A simple example of how to access the Google Analytics API using a service
 * account.
 */
public class HelloAnalytics {


  private static final String APPLICATION_NAME = "Hello Analytics";
  private static final JsonFactory JSON_FACTORY = GsonFactory.getDefaultInstance();
  private static final String KEY_FILE_LOCATION = "<REPLACE_WITH_JSON_FILE>";
  public static void main(String[] args) {
    try {
      Analytics analytics = initializeAnalytics();

      String profile = getFirstProfileId(analytics);
      System.out.println("First Profile Id: "+ profile);
      printResults(getResults(analytics, profile));
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

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

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

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


  private static String getFirstProfileId(Analytics analytics) throws IOException {
    // Get the first view (profile) ID for the authorized user.
    String profileId = null;

    // Query for the list of all accounts associated with the service account.
    Accounts accounts = analytics.management().accounts().list().execute();

    if (accounts.getItems().isEmpty()) {
      System.err.println("No accounts found");
    } else {
      String firstAccountId = accounts.getItems().get(0).getId();

      // Query for the list of properties associated with the first account.
      Webproperties properties = analytics.management().webproperties()
          .list(firstAccountId).execute();

      if (properties.getItems().isEmpty()) {
        System.err.println("No Webproperties found");
      } else {
        String firstWebpropertyId = properties.getItems().get(0).getId();

        // Query for the list views (profiles) associated with the property.
        Profiles profiles = analytics.management().profiles()
            .list(firstAccountId, firstWebpropertyId).execute();

        if (profiles.getItems().isEmpty()) {
          System.err.println("No views (profiles) found");
        } else {
          // Return the first (view) profile associated with the property.
          profileId = profiles.getItems().get(0).getId();
        }
      }
    }
    return profileId;
  }

  private static GaData getResults(Analytics analytics, String profileId) throws IOException {
    // Query the Core Reporting API for the number of sessions
    // in the past seven days.
    return analytics.data().ga()
        .get("ga:" + profileId, "7daysAgo", "today", "ga:sessions")
        .execute();
  }

  private static void printResults(GaData results) {
    // Parse the response from the Core Reporting API for
    // the profile name and number of sessions.
    if (results != null && !results.getRows().isEmpty()) {
      System.out.println("View (Profile) Name: "
        + results.getProfileInfo().getProfileName());
      System.out.println("Total Sessions: " + results.getRows().get(0).get(0));
    } else {
      System.out.println("No results found");
    }
  }
}

Langkah 4: Jalankan contoh

Setelah Anda mengaktifkan Analytics API, instal library klien Google API untuk Java, lalu siapkan kode sumber contoh yang siap dijalankan.

Jika menggunakan IDE, pastikan Anda memiliki target run default yang ditetapkan ke class HelloAnalytics. Jika tidak, Anda dapat mengompilasi dan menjalankan aplikasi dari command line:

  1. Kompilasi contoh menggunakan:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. Jalankan contoh menggunakan:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

Setelah Anda menyelesaikan langkah-langkah ini, contoh menghasilkan nama tampilan (profil) Google Analytics pertama pengguna yang diotorisasi dan jumlah sesi selama tujuh hari terakhir.

Dengan objek layanan Analytics yang diotorisasi, kini Anda dapat menjalankan contoh kode apa pun yang ada di dokumen referensi Management API. Misalnya, Anda dapat mencoba mengubah kode untuk menggunakan metode accountSummaries.list.