Thao tác với google sheet bằng Java
This post hasn't been updated for 3 years
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) + "\t" + row.get(1) + "\t" + 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
All Rights Reserved