Hello Analytics Reporting API v4; การเริ่มต้น Java อย่างรวดเร็วสําหรับบัญชีบริการ

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

บทแนะนํานี้จะอธิบายขั้นตอนที่จําเป็นในการเข้าถึง Analytics Reporting API เวอร์ชัน 4

1. เปิดใช้ API

ในการเริ่มต้นใช้งาน Analytics Reporting API เวอร์ชัน 4 คุณต้องใช้เครื่องมือการตั้งค่าก่อน ซึ่งจะช่วยแนะนําคุณในการสร้างโปรเจ็กต์ในคอนโซล Google API, เปิดใช้ API และสร้างข้อมูลเข้าสู่ระบบ

สร้างข้อมูลเข้าสู่ระบบ

  1. เปิดหน้าบัญชีบริการ เมื่อได้รับข้อความเตือน ให้เลือกโปรเจ็กต์
  2. คลิกสร้างบัญชีบริการ จากนั้นป้อนชื่อและคำอธิบายของบัญชีบริการ คุณจะใช้รหัสเริ่มต้นของบัญชีบริการ หรือเลือกรหัสอื่นที่ไม่ซ้ำกันก็ได้ เมื่อเสร็จแล้วให้คลิกสร้าง
  3. คุณข้ามส่วนสิทธิ์ของบัญชีบริการ (ไม่บังคับ) ที่ตามมาได้ คลิกต่อไป
  4. ในหน้าจอให้สิทธิ์ผู้ใช้เข้าถึงบัญชีบริการนี้ ให้เลื่อนลงไปที่ส่วนสร้างคีย์ คลิก สร้างคีย์
  5. เลือกรูปแบบของคีย์ในแผงด้านข้างที่ปรากฏขึ้น ขอแนะนําให้เลือก JSON
  6. คลิกสร้าง ระบบจะสร้างคู่คีย์สาธารณะ/ส่วนตัวใหม่และดาวน์โหลดลงในเครื่องของคุณ ซึ่งจะเป็นสำเนาเพียงรายการเดียวของคีย์นี้ ดูข้อมูลเกี่ยวกับวิธีจัดเก็บคีย์อย่างปลอดภัยที่การจัดการคีย์ของบัญชีบริการ
  7. คลิกปิดในกล่องโต้ตอบคีย์ส่วนตัวที่บันทึกไว้ในคอมพิวเตอร์ จากนั้นคลิกเสร็จเพื่อกลับไปที่ตารางของบัญชีบริการ

เพิ่มบัญชีบริการลงในบัญชี Google Analytics

บัญชีบริการที่สร้างขึ้นใหม่จะมีอีเมลที่มีลักษณะดังนี้

quickstart@PROJECT-ID.iam.gserviceaccount.com

ใช้ที่อยู่อีเมลนี้เพื่อเพิ่มผู้ใช้ในข้อมูลพร็อพเพอร์ตี้ของ Google Analytics ที่ต้องการเข้าถึงผ่าน API สําหรับบทแนะนํานี้ ต้องมีสิทธิ์อ่านและวิเคราะห์เท่านั้น

2. ติดตั้งไลบรารีของไคลเอ็นต์

หากต้องการติดตั้งไคลเอ็นต์ Java API ของ Google Analytics คุณต้องดาวน์โหลดไฟล์ ZIP ที่มี Jar ทั้งหมดที่ต้องการแตกและคัดลอกลงใน Java classpath

  1. ดาวน์โหลดไลบรารีของไคลเอ็นต์ Analytics Analytics v4 Java ซึ่งรวมอยู่ในไฟล์ ZIP ที่ต้องใช้ทรัพยากร Dependency ทั้งหมด
  2. แตกไฟล์ ZIP
  3. เพิ่ม JAR ทั้งหมดภายในไดเรกทอรี libs ไปยังคลาสเส้นทาง
  4. เพิ่มโหล google-api-services-analyticsreporting-v4-[version].jar ไปยัง Classpath

รายละเอียดสภาพแวดล้อม Java

Eclipse

สําหรับ Eclipse โปรดดูคําถามใน StackOverflow นี้สําหรับคําแนะนําในการเพิ่ม JAR ไปยัง classpath ของโปรเจ็กต์

ถั่วสุทธิ

สําหรับ NetBeans โปรดดูคําถาม StackOverflow นี้สําหรับคําแนะนําในการเพิ่ม JAR ไปยังคลาสเส้นทางของโปรเจ็กต์

แนวคิดของ IntelliJ

สําหรับ IntelliJ IDEA โปรดดูคําถามใน StackOverflow นี้สําหรับคําแนะนําในการเพิ่ม JAR ไปยังคลาสคลาสของโปรเจ็กต์

บรรทัดคำสั่ง

หากพัฒนาจากบรรทัดคําสั่ง ให้เพิ่มค่าต่อไปนี้ลงในการเรียกใช้คําสั่ง javac และ java

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

3. ตั้งค่าตัวอย่าง

คุณจะต้องสร้างไฟล์เดียวที่ชื่อ HelloAnalyticsReporting.java ซึ่งจะมีโค้ดตัวอย่างที่ระบุ

  • คัดลอกหรือดาวน์โหลดซอร์สโค้ดต่อไปนี้ไปที่ HelloAnalyticsReporting.java
  • ย้าย client_secrets.json ที่ดาวน์โหลดไว้ก่อนหน้านี้ไปยังไดเรกทอรีเดียวกันกับโค้ดตัวอย่าง
  • แทนที่ค่าของ KEY_FILE_LOCATION ด้วยค่าที่เหมาะสมจาก Developer 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
    

เมื่อคุณทําตามขั้นตอนเหล่านี้เสร็จแล้ว ตัวอย่างจะแสดงผลจํานวนเซสชันในช่วง 7 วันที่ผ่านมาสําหรับมุมมองที่กําหนด