Thao tác với google sheet bằng Java
Google™ Spreadsheets là chương trình bảng tính miễn phí của google, tuy không đầy đủ như là excel nhưng nó sở hữu nhiều tính năng phong phú và đa dạng của điện toán đám mây giúp cho bạn có thể làm việc một cách hiệu quả. Trong bài viết này tôi sẽ giới thiệu việc sử dụng ngôn ngữ JAVA để thao tác ...
Google™ Spreadsheets là chương trình bảng tính miễn phí của google, tuy không đầy đủ như là excel nhưng nó sở hữu nhiều tính năng phong phú và đa dạng của điện toán đám mây giúp cho bạn có thể làm việc một cách hiệu quả.
Trong bài viết này tôi sẽ giới thiệu việc sử dụng ngôn ngữ JAVA để thao tác với Google Sheet API
Điều kiện cần phải có
- Phiên bản java > 1.7 - Maven - Máy tính phải truy cập được internet - Có 1 tài khoản gmail
2.Bật Google Sheet API ở tài khoản của bạn
-- Truy cập địa chỉ Enable Google Sheet API
=> Download file client_id.json để cho cho vào project
3.Cấu trúc thư mục source code
4.Source code tham khảo
package com.javagdata; 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.HttpTransport; import com.google.api.client.json.jackson2.JacksonFactory; import com.google.api.client.json.JsonFactory; import com.google.api.client.util.store.FileDataStoreFactory; import com.google.api.services.sheets.v4.SheetsScopes; import com.google.api.services.sheets.v4.model.*; import com.google.api.services.sheets.v4.Sheets; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.Arrays; import java.util.List; public class SheetsQuickstart { private static final String APPLICATION_NAME = "Google Sheets API Java"; private static final java.io.File DATA_STORE_DIR = new java.io.File( System.getProperty("user.home"), ".credentials/client_secret_674700710104-vbfa8enkg66l2gohr18d9oal4sp27r73.apps.googleusercontent.com.json"); private static FileDataStoreFactory DATA_STORE_FACTORY; private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance(); private static HttpTransport HTTP_TRANSPORT; private static final List<String> SCOPES = Arrays.asList(SheetsScopes.SPREADSHEETS_READONLY); static { try { HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport(); DATA_STORE_FACTORY = new FileDataStoreFactory(DATA_STORE_DIR); } catch (Throwable t) { t.printStackTrace(); System.exit(1); } } public static Credential authorize() throws IOException { InputStream in = SheetsQuickstart.class.getResourceAsStream("/client_id.json"); GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in)); GoogleAuthorizationCodeFlow flow = new GoogleAuthorizationCodeFlow.Builder(HTTP_TRANSPORT, JSON_FACTORY, clientSecrets, SCOPES) .setDataStoreFactory(DATA_STORE_FACTORY) .setAccessType("offline") .build(); Credential credential = new AuthorizationCodeInstalledApp(flow, new LocalServerReceiver()).authorize("user"); System.out.println("Credentials saved to " + DATA_STORE_DIR.getAbsolutePath()); return credential; } public static Sheets getSheetsService() throws IOException { Credential credential = authorize(); return new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential).setApplicationName(APPLICATION_NAME).build(); } public static void main(String[] args) throws IOException { Sheets service = getSheetsService(); // https://docs.google.com/spreadsheets/d/1py_1x30bHKuFWqOIp1ihouGJ5yTZgrZ0qOOyJSwOieo/edit#gid=0 String spreadsheetId = "1py_1x30bHKuFWqOIp1ihouGJ5yTZgrZ0qOOyJSwOieo"; String range = "Sheet1!A1:C"; ValueRange response = service.spreadsheets().values().get(spreadsheetId, range).execute(); List<List<Object>> values = response.getValues(); if (values == null || values.size() == 0) { System.out.println("No data found."); } else { for (List row : values) { System.out.println(row.get(0) + " " + row.get(1) + " " + row.get(2)); } } } }
Chú ý khi lấy speedsheetId:
https://docs.google.com/spreadsheets/d/1py_1x30bHKuFWqOIp1ihouGJ5yTZgrZ0qOOyJSwOieo/edit?usp=sharing
==> spreadsheetId: 1py_1x30bHKuFWqOIp1ihouGJ5yTZgrZ0qOOyJSwOieo
Tiến hành chạy thử, sau đây là kết quả
Credentials saved to /Users/framgiavn/.credentials/client_secret_674700710104-vbfa8enkg66l2gohr18d9oal4sp27r73.apps.googleusercontent.com.json East Jones Pencil Central Kivell Binder Central Jardine Pencil Central Gill Pen West Sorvino Pencil East Jones Binder Central Andrews Pencil Central Jardine Pencil West Thompson Pencil East Jones Binder Central Morgan Pencil East Howard Binder East Parent Binder East Jones Pencil Central Smith Desk East Jones Pen Set Central Morgan Binder