مرحبًا، الإصدار 4 من واجهة برمجة التطبيقات لإعداد التقارير في "إحصاءات Google"، التشغيل السريع لJavaScript لحسابات الخدمة

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

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

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

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

  1. افتح صفحة حسابات الخدمة. اختَر مشروعًا إذا طُلب منك ذلك.
  2. انقر على إنشاء حساب للخدمة ثم أدخِل اسمًا ووصفًا لحساب الخدمة. يمكنك استخدام معرّف حساب الخدمة التلقائي أو اختيار معرّف فريد مختلف. وعند الانتهاء من ذلك، انقر على إنشاء.
  3. قسم أذونات حساب الخدمة (اختيارية) التالي غير مطلوب. انقر على متابعة.
  4. انتقِل إلى القسم إنشاء مفتاح في أسفل شاشة منح المستخدمين صلاحية الوصول إلى حساب الخدمة هذا. انقر على إنشاء مفتاح.
  5. في اللوحة الجانبية التي تظهر، اختَر التنسيق الخاص بالمفتاح: وننصح باستخدام JSON.
  6. انقر على إنشاء. يتم إنشاء زوج المفتاح العام/الخاص وتنزيله على جهازك، وهو النسخة الوحيدة من هذا المفتاح. للحصول على معلومات عن طريقة التخزين الآمن للمفتاح، يُرجى مراجعةإدارة مفاتيح حساب الخدمة.
  7. انقر على إغلاق في مربّع الحوار تم حفظ المفتاح الخاص على الكمبيوتر، ثم انقر على تم للرجوع إلى جدول حسابات الخدمة.

إضافة حساب الخدمة إلى حساب "إحصاءات Google"

سيكون لحساب الخدمة الذي تم إنشاؤه حديثًا عنوان بريد إلكتروني يبدو مشابهًا لما يلي:

quickstart@PROJECT-ID.iam.gserviceaccount.com

يمكنك استخدام عنوان البريد الإلكتروني هذا لإضافة مستخدم إلى ملف "إحصاءات Google" الشخصي الذي تريد الوصول إليه عبر واجهة برمجة التطبيقات. يتطلب هذا البرنامج التعليمي أذونات القراءة والتحليل فقط.

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

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

  • قم بتجميع العيّنة باستخدام:

    javac -classpath '/path/to/analyticsreporting/*:/path/to/analyticsreporting/libs/*' HelloAnalyticsReporting.java
    
  • تنفيذ العيّنة باستخدام:

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

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