שלום Analytics API: מדריך למתחילים של Java לחשבונות שירות

במדריך הזה מפורטים השלבים שצריך לבצע כדי להיכנס לחשבון Google Analytics, לשלוח שאילתות לממשקי ה-API של Analytics, לטפל בתשובות ה-API ולהציג את התוצאות כפלט. במדריך הזה נשתמש בגרסה 3.0 של ממשק ה-API הראשי לדיווח, ב-Management API v3.0 וב-OAuth2.0.

שלב 1: מפעילים את Analytics API

על מנת להתחיל להשתמש ב-Google Analytics API, תחילה צריך להשתמש בכלי ההגדרה, שמדריך אתכם ביצירת פרויקט במסוף Google API, הפעלת ה-API ויצירת פרטי כניסה.

יצירת מזהה לקוח

  1. פותחים את הדף חשבון שירות. אם מתבקשים, בוחרים פרויקט.
  2. לוחצים על Create Service Account ומזינים את השם ואת התיאור של חשבון השירות. אפשר להשתמש במספר של חשבון השירות שמוגדר כברירת מחדל, או לבחור מספר אחר וייחודי. בסיום, לוחצים על יצירה.
  3. הקטע הרשאות לחשבון שירות (אופציונלי) לא נדרש. לוחצים על Continue.
  4. במסך Grant users access to this service account גוללים למטה לקטע Create key. לוחצים על Create key.
  5. בחלונית הצדדית שמופיעה, בוחרים את הפורמט של המפתח: מומלץ JSON.
  6. לוחצים על יצירה. זוג המפתחות הציבורי/הפרטי החדש נוצר והורדה למחשב שלך. הוא משמש כעותק היחיד של המפתח הזה. למידע נוסף על אחסון מאובטח, קראו את המאמר ניהול מפתחות של חשבונות שירות.
  7. לוחצים על Close בתיבת הדו-שיח Private key saved to your במחשב, ולאחר מכן לוחצים על Done כדי לחזור לטבלה של חשבונות השירות.

הוספת חשבון שירות לחשבון Google Analytics

כתובת האימייל של חשבון השירות החדש שתיווצר תהיה <projectId>-<uniqueId>@developer.gserviceaccount.com. ניתן להשתמש בכתובת האימייל הזו כדי להוסיף משתמש לחשבון Google Analytics שאליו רוצים לגשת דרך ה-API. במדריך הזה נדרשות רק הרשאות של קריאה וניתוח.

שלב 2: התקנת ספריית הלקוח של Google

כדי להתקין את לקוח Java של Google Analytics API, צריך להוריד קובץ ZIP שמכיל את כל הצנצנות שצריך לחלץ ולהעתיק לנתיב ה-class של Java.

  1. מורידים את ספריית הלקוח של Google Analytics Java, שמקובצת כקובץ ZIP עם כל יחסי התלות הנדרשים.
  2. חילוץ קובץ ה-ZIP
  3. מוסיפים את כל קובצי ה-JAR שנמצאים בספרייה libs לנתיב המחלקה.
  4. מוסיפים את הצנצנת google-api-services-analytics-v3-[version].jar לנתיב המחלקה.

שלב 3: מגדירים את הדוגמה

עליכם ליצור קובץ יחיד בשם HelloAnalytics.java, שיכלול את הקוד לדוגמה הנתון.

  1. צריך להעתיק או להוריד את קוד המקור הבא אל HelloAnalytics.java.
  2. מעבירים את הקובץ client_secrets.JSON שהורדתם אל אותה ספרייה שבה נמצא הקוד לדוגמה.
  3. החלף את הערכים של KEY_FILE_LOCATION בערכים המתאימים מ-Developer Console.
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");
    }
  }
}

שלב 4: מריצים את הדוגמה

אחרי שמפעילים את ה-API של Analytics, התקנתם את ספריית הלקוח של Google APIs עבור Java, והגדרתם את קוד המקור לדוגמה שהדוגמה מוכנה להרצה.

אם משתמשים בסביבת פיתוח משולבת (IDE), חשוב לוודא שיעד הריצה שמוגדר כברירת מחדל הוא המחלקה HelloAnalytics. אחרת, אפשר להדר ולהריץ את האפליקציה משורת הפקודה:

  1. עורכים את הדוגמה באמצעות:
    javac -classpath /path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics.java
  2. מריצים את הדוגמה באמצעות:
    java -classpath ./:/path/to/google/lib/*:/path/to/google/lib/libs/* HelloAnalytics

לאחר ביצוע השלבים האלו, הדגימה תפיק את השם של התצוגה המפורטת הראשונה של המשתמש המורשה ב-Google Analytics ואת מספר הסשנים בשבעת הימים האחרונים.

בעזרת אובייקט השירות המורשה של Analytics, תוכלו עכשיו להריץ כל דוגמאות קוד שמופיעות ב מסמכי העזר של Management API. לדוגמה, תוכלו לנסות לשנות את הקוד כדי להשתמש בשיטה accountSummaries.list.