হ্যালো অ্যানালিটিক্স রিপোর্টিং API v4; ইনস্টল করা অ্যাপ্লিকেশনের জন্য জাভা কুইকস্টার্ট

এই টিউটোরিয়ালটি অ্যানালিটিক্স রিপোর্টিং API v4 অ্যাক্সেস করার জন্য প্রয়োজনীয় পদক্ষেপের মধ্য দিয়ে চলে।

1. API সক্রিয় করুন

অ্যানালিটিক্স রিপোর্টিং API v4 ব্যবহার করা শুরু করতে, আপনাকে প্রথমে সেটআপ টুল ব্যবহার করতে হবে, যা আপনাকে Google API কনসোলে একটি প্রকল্প তৈরি, API সক্ষম করা এবং শংসাপত্র তৈরি করার মাধ্যমে গাইড করে৷

দ্রষ্টব্য: একটি ওয়েব ক্লায়েন্ট আইডি বা একটি ইনস্টল করা অ্যাপ্লিকেশন ক্লায়েন্ট তৈরি করতে, আপনাকে সম্মতি স্ক্রিনে একটি পণ্যের নাম সেট করতে হবে। যদি আপনি ইতিমধ্যে তা না করে থাকেন তাহলে আপনাকে কনসেন্ট স্ক্রীন কনফিগার করতে বলা হবে।

শংসাপত্র তৈরি করুন

  • শংসাপত্র পৃষ্ঠা খুলুন.
  • ক্রেডেনশিয়াল তৈরি করুন ক্লিক করুন এবং OAuth ক্লায়েন্ট আইডি নির্বাচন করুন
  • অ্যাপ্লিকেশন প্রকারের জন্য অন্য নির্বাচন করুন।
  • ক্লায়েন্ট আইডির নাম দিন কুইকস্টার্ট এবং তৈরি করুন ক্লিক করুন।

শংসাপত্র পৃষ্ঠা থেকে নতুন তৈরি ক্লায়েন্ট আইডিতে ক্লিক করুন এবং JSON ডাউনলোড করুন ক্লিক করুন এবং এটি client_secrets.json হিসাবে সংরক্ষণ করুন; আপনার টিউটোরিয়ালে পরে এটি প্রয়োজন হবে।

2. ক্লায়েন্ট লাইব্রেরি ইনস্টল করুন

Google Analytics API জাভা ক্লায়েন্ট ইনস্টল করার জন্য, আপনাকে অবশ্যই একটি জিপ ফাইল ডাউনলোড করতে হবে যাতে আপনার জাভা ক্লাসপাথে এক্সট্র্যাক্ট এবং কপি করার জন্য প্রয়োজনীয় সমস্ত জার রয়েছে।

  1. অ্যানালিটিক্স রিপোর্টিং এপিআই v4 জাভা ক্লায়েন্ট লাইব্রেরি ডাউনলোড করুন, যা সমস্ত প্রয়োজনীয় নির্ভরতা সহ একটি জিপ ফাইল হিসাবে একত্রিত।
  2. জিপ ফাইলটি বের করুন।
  3. আপনার ক্লাসপথে libs ডিরেক্টরির মধ্যে সমস্ত JAR যোগ করুন।
  4. আপনার ক্লাসপথে google-api-services-analyticsreporting-v4-[version].jar জার যোগ করুন।

জাভা পরিবেশের বিশদ বিবরণ

গ্রহন

Eclipse এর জন্য, আপনার প্রকল্পের ক্লাসপাথে JAR যোগ করার নির্দেশাবলীর জন্য এই StackOverflow প্রশ্নটি দেখুন।

NetBeans

NetBeans- এর জন্য, আপনার প্রকল্পের ক্লাসপাথে JAR যোগ করার নির্দেশাবলীর জন্য এই StackOverflow প্রশ্নটি দেখুন।

ইন্টেলিজ আইডিয়া

IntelliJ IDEA- এর জন্য আপনার প্রকল্পের ক্লাসপাথে JAR যোগ করার নির্দেশাবলীর জন্য এই StackOverflow প্রশ্নটি দেখুন।

কমান্ড লাইন

কমান্ড লাইন থেকে বিকাশ করলে, আপনার javac এবং java কমান্ড আহ্বানে নিম্নলিখিত যোগ করুন:

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

3. নমুনা সেটআপ করুন

আপনাকে HelloAnalyticsReporting.java নামে একটি ফাইল তৈরি করতে হবে, যাতে প্রদত্ত নমুনা কোড থাকবে।

  • নমুনা কোড হিসাবে একই ডিরেক্টরিতে পূর্বে ডাউনলোড করা client_secrets.json সরান।
  • আপনি যে ভিউ অ্যাক্সেস করতে চান তার ID দিয়ে 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 অ্যাকাউন্টে লগ ইন করে থাকেন, তাহলে অনুমোদনের জন্য ব্যবহার করার জন্য আপনাকে একটি অ্যাকাউন্ট নির্বাচন করতে বলা হবে৷

আপনি যখন এই ধাপগুলি শেষ করেন, নমুনাটি প্রদত্ত দৃশ্যের জন্য গত সাত দিনের সেশনের সংখ্যা বের করে।