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

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

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

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

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

  1. পরিষেবা অ্যাকাউন্ট পৃষ্ঠা খুলুন। অনুরোধ করা হলে, একটি প্রকল্প নির্বাচন করুন.
  2. পরিষেবা অ্যাকাউন্ট তৈরি ক্লিক করুন, পরিষেবা অ্যাকাউন্টের জন্য একটি নাম এবং বিবরণ লিখুন। আপনি ডিফল্ট পরিষেবা অ্যাকাউন্ট আইডি ব্যবহার করতে পারেন, বা একটি ভিন্ন, অনন্য একটি চয়ন করতে পারেন৷ হয়ে গেলে Create এ ক্লিক করুন।
  3. নিম্নলিখিত পরিষেবা অ্যাকাউন্ট অনুমতি (ঐচ্ছিক) বিভাগ প্রয়োজন নেই। অবিরত ক্লিক করুন.
  4. ব্যবহারকারীদের এই পরিষেবা অ্যাকাউন্টের স্ক্রিনে অ্যাক্সেস মঞ্জুর করুন , কী তৈরি করুন বিভাগে নিচে স্ক্রোল করুন। Create key এ ক্লিক করুন।
  5. প্রদর্শিত পার্শ্ব প্যানেলে, আপনার কীটির বিন্যাস নির্বাচন করুন: JSON প্রস্তাবিত৷
  6. তৈরি করুন ক্লিক করুন। আপনার নতুন পাবলিক/প্রাইভেট কী জোড়া তৈরি এবং আপনার মেশিনে ডাউনলোড করা হয়েছে; এটি এই কীটির একমাত্র অনুলিপি হিসাবে কাজ করে। কীভাবে এটি নিরাপদে সঞ্চয় করা যায় সে সম্পর্কে তথ্যের জন্য, পরিষেবা অ্যাকাউন্ট কীগুলি পরিচালনা করা দেখুন।
  7. আপনার কম্পিউটার ডায়ালগে সংরক্ষিত ব্যক্তিগত কী- তে ক্লোজ ক্লিক করুন, তারপর আপনার পরিষেবা অ্যাকাউন্টের টেবিলে ফিরে যেতে সম্পন্ন ক্লিক করুন।

Google Analytics অ্যাকাউন্টে পরিষেবা অ্যাকাউন্ট যোগ করুন

সদ্য নির্মিত পরিষেবা অ্যাকাউন্টে একটি ইমেল ঠিকানা থাকবে যা দেখতে অনুরূপ:

quickstart@PROJECT-ID.iam.gserviceaccount.com

আপনি API এর মাধ্যমে অ্যাক্সেস করতে চান এমন Google বিশ্লেষণ দৃশ্যে একজন ব্যবহারকারীকে যুক্ত করতে এই ইমেল ঠিকানাটি ব্যবহার করুন৷ এই টিউটোরিয়ালের জন্য শুধুমাত্র Read & Analyze অনুমতি প্রয়োজন।

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 সরান।
  • বিকাশকারী কনসোল থেকে উপযুক্ত মানগুলির সাথে KEY_FILE_LOCATION এর মানগুলি প্রতিস্থাপন করুন৷
  • আপনি যে ভিউ অ্যাক্সেস করতে চান তার ID দিয়ে 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
    

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