Hello Analytics Reporting API v4; Hizmet hesapları için Java hızlı başlangıç kılavuzu

Bu eğitimde, Analytics Reporting API v4'e erişmek için gereken adımlar açıklanmaktadır.

1. API'yi etkinleştirme

Analytics Reporting API v4'ü kullanmaya başlamak için önce Google API Konsolu'nda proje oluşturma, API'yi etkinleştirme ve kimlik bilgileri oluşturma konusunda size yol gösterecek olan kurulum aracını kullanmanız gerekir.

Kimlik bilgileri oluştur

  1. Hizmet hesapları sayfasını açın. İstenirse bir proje seçin.
  2. Hizmet Hesabı Oluştur'u tıklayın, hizmet hesabı için bir ad ve açıklama girin. Varsayılan hizmet hesabı kimliğini kullanabilir veya farklı, benzersiz bir tane seçebilirsiniz. Tamamladıktan sonra Oluştur'u tıklayın.
  3. Sonraki Hizmet hesabı izinleri (isteğe bağlı) bölümü gerekli değildir. Devam'ı tıklayın.
  4. Kullanıcıların bu hizmet hesabına erişmelerine izin ver ekranında, Anahtar oluştur bölümüne gidin. Anahtar oluştur'u tıklayın.
  5. Görüntülenen yan panelde anahtar biçimini seçin: JSON önerilir.
  6. Create'i (Oluştur) tıklayın. Herkese açık/özel yeni anahtar çiftiniz oluşturulur ve makinenize indirilir; bu anahtarın tek kopyası olarak işlev görür. Güvenli şekilde nasıl depolanacağını öğrenmek için Hizmet hesabı anahtarlarını yönetme konusuna bakın.
  7. Özel anahtar bilgisayarınıza kaydedildi iletişiminde Kapat'ı tıklayın. Ardından hizmet hesapları tablosuna dönmek için Tamam'ı tıklayın.

Google Analytics hesabına hizmet hesabı ekleyin

Yeni oluşturulan hizmet hesabı şuna benzer bir e-posta adresine sahip olur:

quickstart@PROJECT-ID.iam.gserviceaccount.com

API aracılığıyla erişmek istediğiniz Google Analytics görünümüne bir kullanıcı eklemek için bu e-posta adresini kullanın. Bu eğitim için yalnızca Okuma ve Analiz izinleri gereklidir.

2. İstemci kitaplığını yükleme

Google Analytics API Java İstemcisini yüklemek için çıkarmanız ve Java sınıf yolunuza kopyalamanız gereken tüm jar dosyalarını içeren bir zip dosyası indirmeniz gerekir.

  1. Gerekli tüm bağımlılıkları içeren bir ZIP dosyası olarak sunulan Analytics Reporting API v4 Java İstemci Kitaplığı'nı indirin.
  2. ZIP dosyasını çıkarın.
  3. libs dizinindeki tüm JAR'ları sınıf yolunuza ekleyin.
  4. google-api-services-analyticsreporting-v4-[version].jar jar dosyasını sınıf yolunuza ekleyin.

Java ortamı ayrıntıları

Güneş/ay tutulması

Eclipse için projenizin sınıf yoluna JAR eklemeyle ilgili talimatlar için bu StackOverflow sorusuna bakın.

NetBeans

NetBeans için projenizin sınıf yoluna JAR eklemeyle ilgili talimatlar için bu StackOverflow sorusuna bakın.

IntelliJ IDEA

Projenizin sınıf yoluna JAR eklemeyle ilgili talimatlar için IntelliJ IDEA ile ilgili bu StackOverflow sorusuna bakın.

Komut satırı

Komut satırından geliştirme yapıyorsanız javac ve java komut çağrılarınıza aşağıdakileri ekleyin:

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

3. Örneği oluşturun

Belirtilen örnek kodu içeren HelloAnalyticsReporting.java adında tek bir dosya oluşturmanız gerekir.

  • Aşağıdaki kaynak kodunu HelloAnalyticsReporting.java hizmetine kopyalayın veya indirin.
  • Daha önce indirilen client_secrets.json öğesini örnek kodla aynı dizine taşıyın.
  • KEY_FILE_LOCATION değerlerini, Developer Console'daki uygun değerlerle değiştirin.
  • VIEW_ID değerini, erişmek istediğiniz görünümün kimliğiyle değiştirin.
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. Örneği çalıştır

IDE kullanıyorsanız HelloAnalytics sınıfına ayarlanmış varsayılan bir çalıştırma hedefiniz olduğundan emin olun. Aksi takdirde, uygulamayı komut satırından derleyip çalıştırabilirsiniz:

  • Şunu kullanarak örneği derleyin:

    javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
    
  • Şunu kullanarak örneği çalıştırın:

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

Bu adımları tamamladığınızda, örnek, belirtilen görünüm için son yedi gündeki oturum sayısını verir.