مرحبًا Analytics Reporting API الإصدار 4، دليل البدء السريع لاستخدام Java للتطبيقات المثبّتة

يرشدك هذا الدليل التعليمي إلى الخطوات المطلوبة للوصول إلى الإصدار 4 من Analytics Reporting API.

1- تفعيل واجهة برمجة التطبيقات

لبدء استخدام الإصدار 4 من Analytics Reporting API، عليك أولاً استخدام أداة الإعداد التي ترشدك خلال إنشاء مشروع في وحدة التحكم في Google API وتفعيل واجهة برمجة التطبيقات وإنشاء بيانات الاعتماد.

ملاحظة: لإنشاء معرِّف عميل ويب أو عميل تطبيق مثبَّت، عليك تحديد اسم منتج في شاشة الموافقة. إذا لم يسبق لك إجراء ذلك، سيُطلب منك ضبط شاشة طلب الموافقة.

إنشاء بيانات اعتماد

  • افتح صفحة بيانات الاعتماد.
  • انقر على إنشاء بيانات اعتماد واختَر معرِّف عميل OAuth.
  • في حقل نوع التطبيق، اختَر غير ذلك.
  • أدخِل اسمًا quickstart لمعرِّف العميل وانقر على quickstart.

من صفحة بيانات الاعتماد، انقر على معرِّف العميل الذي تم إنشاؤه حديثًا، ثم انقر على تنزيل JSON واحفظه باسم client_secrets.json. ستحتاج إليه لاحقًا في البرنامج التعليمي.

2. تثبيت مكتبة البرامج

لتثبيت عميل JavaScript لواجهة برمجة تطبيقات Google Analytics، يجب تنزيل ملف ZIP يحتوي على جميع الأواني التي تحتاج إلى استخراجها ونسخها إلى مسار فئة Java.

  1. نزِّل مكتبة برامج Java الإصدار 4 من "واجهة برمجة التطبيقات لإعداد التقارير في Analytics"، والتي تم تجميعها كملف ZIP يضم كل التبعيات المطلوبة.
  2. استخرِج ملف ZIP.
  3. أضِف كل ملفات JAR ضمن دليل libs إلى مسار الفئة.
  4. أضِف وعاء google-api-services-analyticsreporting-v4-[version].jar إلى مسار الصف.

تفاصيل بيئة Java

الكسوف

بالنسبة إلى Eclipse، راجِع سؤال StackOverflow هذا للحصول على تعليمات حول إضافة JARs إلى مسار فئة مشروعك.

NetBeans

بالنسبة إلى NetBeans، راجِع سؤال StackOverflow هذا للحصول على تعليمات حول إضافة JARs إلى مسار فئة مشروعك.

IntelliJ IDEA

بالنسبة إلى IntelliJ IDEA، يُرجى الاطّلاع على سؤال StackOverflow هذا للحصول على تعليمات حول إضافة JARs إلى مسار فئة مشروعك.

سطر الأوامر

في حال التطوير من سطر الأوامر، أضِف ما يلي إلى استدعاءات الأوامر javac وjava:

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

3- إعداد النموذج

يجب إنشاء ملف واحد باسم HelloAnalyticsReporting.java، يتضمّن الرمز النموذجي المحدّد.

  • انسخ أو نزِّل رمز المصدر التالي إلى HelloAnalyticsReporting.java.
  • انقل ملف client_secrets.json الذي سبق تنزيله إلى الدليل نفسه الذي يتضمّن الرمز النموذجي.
  • استبدِل قيمة VIEW_ID برقم تعريف الملف الشخصي الذي تريد الوصول إليه.
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. تشغيل العيّنة

إذا كنت تستخدم بيئة تطوير متكاملة (IDE)، احرص على ضبط هدف التشغيل التلقائي على الفئة HelloAnalytics.

  • سيحمّل التطبيق صفحة التفويض في المتصفح.
  • إذا لم تكن مسجِّلاً الدخول إلى حسابك على Google، سيُطلب منك تسجيل الدخول. إذا كنت مسجّلاً الدخول إلى حسابات Google متعددة، سيُطلب منك اختيار حساب واحد لاستخدامه في منح الإذن.

عند الانتهاء من هذه الخطوات، يقوم النموذج بإخراج عدد الجلسات الخاصة بآخر سبعة أيام للعرض المحدد.