नमस्ते Analytics API: सेवा खातों के लिए Java क्विकस्टार्ट

यह ट्यूटोरियल, Google Analytics खाते को ऐक्सेस करने, Analytics एपीआई से जुड़ी क्वेरी करने, एपीआई के जवाबों को मैनेज करने, और नतीजों का आउटपुट देने के लिए ज़रूरी तरीके बताता है. इस ट्यूटोरियल में, मुख्य रिपोर्टिंग एपीआई v3.0, मैनेजमेंट एपीआई v3.0, और OAuth2.0 का इस्तेमाल किया जाता है.

पहला कदम: Analytics API चालू करना

Google Analytics API का इस्तेमाल शुरू करने से पहले, सेट अप टूल इस्तेमाल करना ज़रूरी है. इससे आपको Google API (एपीआई) कंसोल में प्रोजेक्ट बनाने, एपीआई की सुविधा चालू करने, और क्रेडेंशियल बनाने की जानकारी मिलती है.

क्लाइंट आईडी बनाएं

  1. सेवा खाते का पेज खोलें. पूछे जाने पर, प्रोजेक्ट चुनें.
  2. सेवा खाता बनाएं पर क्लिक करें, सेवा खाते का नाम और जानकारी डालें. आप डिफ़ॉल्ट सेवा खाता आईडी इस्तेमाल करें या फिर कोई दूसरा, अलग खाता आईडी चुनें. काम पूरा हो जाने पर, बनाएं पर क्लिक करें.
  3. इसके बाद आने वाले सेवा खाते की अनुमतियां (ज़रूरी नहीं) सेक्शन की ज़रूरत नहीं है. जारी रखें पर क्लिक करें.
  4. उपयोगकर्ताओं को इस खाते का ऐक्सेस दें स्क्रीन पर, नीचे कुंजी बनाएं सेक्शन तक स्क्रोल करें. कुंजी बनाएं पर क्लिक करें.
  5. इसके बाद, जो साइड पैनल दिखेगा उसमें अपनी कुंजी का फ़ॉर्मैट चुनें: JSON का सुझाव दिया जाता है.
  6. बनाएं पर क्लिक करें. आपकी नई सार्वजनिक/निजी कुंजी की जोड़ी जनरेट करके आपकी मशीन पर डाउनलोड की जाती है. यह इस कुंजी की अकेली कॉपी की तरह काम करती है. इसे सुरक्षित तौर पर कैसे सेव किया जाए, इसकी जानकारी के लिए, सेवा खाता कुंजियां मैनेज करें देखें.
  7. आपके कंप्यूटर पर सेव की गई निजी कुंजी डायलॉग पर, बंद करें पर क्लिक करें. इसके बाद, अपने सेवा खातों की टेबल पर वापस लौटने के लिए, हो गया पर क्लिक करें.

Google Analytics खाते में सेवा खाता जोड़ें

नए बनाए गए सेवा खाते में एक ईमेल पता होगा, <projectId>-<uniqueId>@developer.gserviceaccount.com; इस ईमेल पते का इस्तेमाल उपयोगकर्ता को Google के उस Analytics खाते में जोड़ने के लिए करें जिसे एपीआई से ऐक्सेस करना है. सिर्फ़ इस ट्यूटोरियल के लिए, पढ़ें और विश्लेषण करें देखें.

चरण 2: Google क्लाइंट लाइब्रेरी इंस्टॉल करना

Google Analytics API Java क्लाइंट इंस्टॉल करने के लिए, आपको एक ऐसी ZIP फ़ाइल डाउनलोड करनी होगी जिसमें वे सभी जार हों जो आपके Java क्लासपाथ में निकालना और उन्हें कॉपी करना चाहते हैं.

  1. Google Analytics Java क्लाइंट लाइब्रेरी डाउनलोड करें. यह सभी ज़रूरी डिपेंडेंसी के साथ ZIP फ़ाइल के तौर पर बंडल की जाती है.
  2. ZIP फ़ाइल निकालें
  3. अपने क्लास पाथ में, libs डायरेक्ट्री में सभी JAR जोड़ें.
  4. अपने क्लासपाथ में google-api-services-analytics-v3-[version].jar जार जोड़ें.

तीसरा चरण: सैंपल सेट अप करना

आपको HelloAnalytics.java नाम की एक फ़ाइल बनानी होगी. इसमें, दिया गया सैंपल कोड शामिल होगा.

  1. नीचे दिए गए सोर्स कोड को HelloAnalytics.java पर कॉपी करें या डाउनलोड करें.
  2. पहले से डाउनलोड किए गए client_secrets.JSON को सैंपल कोड वाली डायरेक्ट्री में ले जाएं.
  3. KEY_FILE_LOCATION के मानों को डेवलपर कंसोल के उचित मानों से बदलें.
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");
    }
  }
}

चौथा चरण: सैंपल चलाना

Analytics API चालू करने के बाद, Java के लिए Google API की क्लाइंट लाइब्रेरी इंस्टॉल करें और सैंपल सोर्स कोड सेट अप करें. साथ ही, सैंपल जांच के लिए तैयार हो.

अगर आप किसी आईडीई का इस्तेमाल कर रहे हैं, तो पक्का करें कि आपके पास 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 सेवा ऑब्जेक्ट से, मैनेज करने वाले एपीआई के संदर्भ वाले दस्तावेज़ में मिलने वाले किसी भी कोड सैंपल को चलाया जा सकता है. उदाहरण के लिए, आप कोड को बदलकर, accountSummeries.list तरीके का इस्तेमाल कर सकते हैं.