2018年1月11日 星期四

Google API 使用 Google Sheets 使用雲端Google試算表 使用 JAVA實作


本篇介紹使用Google API ,來讀取在Google雲端試算表。

使用Java來說明,本專案實作前你需要:
1、Java 1.7
2、Google 帳號
3、要有網路瀏覽器


一、 註冊Google Sheets API 及 申請 Google Developers Console 憑證

https://console.developers.google.com/flows/enableapi?apiid=sheets.googleapis.com


圖1 按下 繼續


圖2 按下 前往「憑證」

圖3 按下 取消


圖4 點選憑證頁中的 OAuth同意畫面




圖5 輸入 電子郵件地址 及 產品名稱 -> 儲存

圖6 前往「憑證」 -> 建立憑證





圖7 選擇 OAuth 用戶端ID




圖8 選擇 其它 -> 輸入 名稱 -> 建立



圖9 下載憑證 JSON檔



圖10 憑證JSON檔 client_secret.json



二、進入進入雲端硬碟,建立測試Google試算表資料

圖11 進入雲端硬碟 ->



圖12 新增資料夾 (googleapi) -> 新增Google試算表



圖13 進入Google試算表 -> 輸入名稱 (google test) -> Sheets名稱 (Class Data)




三、建立 Java 程式專案

圖14 建立 Java 程式專案



圖15 需要的Java jar檔 (使用 Maven )




 <dependency>
  <groupId>com.google.api-client</groupId>
  <artifactId>google-api-client</artifactId>
  <version>1.23.0</version>
 </dependency>
 <dependency>
  <groupId>com.google.oauth-client</groupId>
  <artifactId>google-oauth-client-jetty</artifactId>
  <version>1.23.0</version>
 </dependency>
 <dependency>
  <groupId>com.google.apis</groupId>
  <artifactId>google-api-services-sheets</artifactId>
  <version>v4-rev493-1.23.0</version>
 </dependency>
 
 


程式參考: Java Quickstart
https://developers.google.com/sheets/api/quickstart/java

  package com.googletest;

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;

/**
 * https://developers.google.com/sheets/api/quickstart/java
 * 1. 建立 Google API Console 及註冊  https://console.developers.google.com/flows/enableapi?apiid=sheets.googleapis.com
 * 2. 新增憑證
 *
 */
public class Quickstart {
 /** Application name. */
 private static final String APPLICATION_NAME = "googletapi";//

 /** Directory to store user credentials for this application. (暫存 保存的憑據) */
 private static final java.io.File DATA_STORE_DIR = new java.io.File(System.getProperty("user.home"), ".credentials/sheets.googleapis.com-java-quickstart");

 /** Global instance of the {@link FileDataStoreFactory}. */
 private static FileDataStoreFactory DATA_STORE_FACTORY;

 /** Global instance of the JSON factory. */
 private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();

 /** Global instance of the HTTP transport. */
 private static HttpTransport HTTP_TRANSPORT;

 /**
  * Global instance of the scopes required by this quickstart.
  *
  * If modifying these scopes, delete your previously saved credentials at
  * ~/.credentials/sheets.googleapis.com-java-quickstart
  */
 private static final List 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);
  }
 }

 /**
  * Creates an authorized Credential object.
  * 
  * @return an authorized Credential object.
  * @throws IOException
  */
 public static Credential authorize() throws IOException {
  // Load client secrets.
  InputStream in = Quickstart.class.getResourceAsStream("/client_secret.json");
  GoogleClientSecrets clientSecrets = GoogleClientSecrets.load(JSON_FACTORY, new InputStreamReader(in));

  // Build flow and trigger user authorization request.
  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;
 }

 /**
  * Build and return an authorized Sheets API client service.
  * 
  * @return an authorized Sheets API client service
  * @throws IOException
  */
 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 {
  // Build a new authorized API client service.
  Sheets service = getSheetsService();

  //https://docs.google.com/spreadsheets/d/1WjVH1cVE1niaxSZ43i4rOwyp1EG4XbTQk4FXGsgT0yo/edit#gid=0
  String spreadsheetId = "1WjVH1cVE1niaxSZ43i4rOwyp1EG4XbTQk4FXGsgT0yo";
  String range = "Class Data!A2:E";
  ValueRange response = service.spreadsheets().values().get(spreadsheetId, range).execute();
  List> values = response.getValues();
  if (values == null || values.size() == 0) {
   System.out.println("No data found.");
  } else {
   System.out.println("Name, Major");
   for (List row : values) {
    // Print columns A and E, which correspond to indices 0 and 4.
    System.out.printf("%s, %s\n", row.get(0), row.get(4));
   }
  }
 }

}

 
 


修改的地方有:
圖16 修改 憑證JSON檔 的檔名




圖17 修改為你的 Google試算表 URL ID



圖18 取得 Google試算表 URL ID



圖19 Google試算表 的資料內容



圖20 測試讀取Google試算表


















用LINE傳送分享









其它文章

沒有留言:

張貼留言

標籤

Oracle (150) Oracle DB (144) Oracle_DB (143) Oracle SQL (135) JAVA (84) css-基本類 (65) MySQL (59) CSS Selector (58) jQuery (49) JavaScript-基本類 (39) Spring Boot (38) JavaScript (37) JavaScript HTML DOM (37) JavaScript-HTML_DOM (36) CSS3 (30) JAVA-基本類 (28) jQuery UI (27) Apache (23) Oracle GROUP BY (20) datepicker (20) Android (18) Oracle Date (17) c (17) JAVA-lang套件 (16) Linux (16) Oracle Sub Query (16) Spring-基本類 (16) jQuery-基本類 (16) MySQL-進階系列教學 (15) Android基本類 (14) Grails (14) Oracle join (14) SQLite (13) Spring (13) WIN7-基本類 (13) grails-基本類 (13) linux cent os (13) CKEditor (12) JAVA-流程控制類 (12) JAVA_Spring (12) PHP (11) Spring MVC (11) MySQL-基本系列教學 (10) Notepad (10) Notepad++ (10) SQLite for java (10) Windows (10) c/c++ (10) eclipse (9) jQuery-Selector (9) sqldeveloper (9) DB_Toad (8) JAVA_IDE_Eclipse (8) JavaScript-String類 (8) MySQL DB Toad (8) MySQL-DATE相關 (8) MySQL-函式相關 (8) Spring Bean (8) Android Studio (7) HTML5 (7) Hibernate (7) JAVA-OCWCD (7) JavaScript-陣列類 (7) Docker (6) JAVA-程式分享 (6) JAVA.util套件 (6) JavaScript-數學類 (6) MinGw (6) MySQL-其它類 (6) Servlet (6) centos (6) Apache_Tomcat (5) Apache套件_POI (5) CSS (5) JavaScript-Date物件 (5) JavaScript-其它類 (5) PostgreSQL (5) httpd (5) log4j (5) 基本資訊 (5) 開發工具 (5) CSS Properties (4) Dev-C++ (4) IntelliJ IDEA (4) Oracle DDL (4) Sublime (4) TortoiseSVN (4) apache_Maven (4) Android NDK (3) Eclipse IDE for C/C++ (3) Hibernate-基本類 (3) JAVA-問題 (3) JAVA-綀習分享 (3) JVM (3) Linux 指令 (3) Proxy Server (3) Spring Mobile (3) Spring web (3) Squid (3) VirtualBox (3) maven (3) zk (3) 生活其它 (3) Bootstrap (2) Filter (2) JAVA_IO (2) JAVA_其它_itext套件 (2) JBoss-問題 (2) JSP (2) Jboss (2) Listener (2) MySQL-語法快速查詢 (2) Spring AOP (2) Spring Batch (2) Spring Boot Actuator (2) Spring i18n (2) Subversive (2) Tomcat 8 (2) UML (2) WebJars (2) WinMerge (2) c++ (2) c語言綀習題 (2) jQuery Mobile (2) jQuery-事件處理 (2) jQuery-套件類 (2) putty (2) svn (2) weblogic (2) Apache_JMeter (1) Apache套件_BeanUtils (1) Apache套件_StringUtils (1) Base64 (1) Google API (1) HTML5-基本類 (1) Heap (1) JAVA 7 (1) JAVA SE 、JAVA EE、JAVA ME (1) JAVA 日期 (1) JAVA-OCJP (1) JAVA-WEB (1) JAVA_IDE (1) JAVA其它 (1) JBoss Server (1) JDK (1) JMX (1) JRE (1) Java RMI (1) Java String (1) Joda Time (1) Linux_其它 (1) MySQL教學 (1) Oracle_VirtualBox (1) SQL Server (1) SWT (1) Session (1) Stack (1) Struts 2 (1) Tool (1) ZK Studio (1) csv (1) grails-其它類 (1) jQuery-進階 (1) java mail (1) java web (1) java8 (1) jsoup (1) mockmvc (1) modules (1) tomcat (1) win10 (1) 其它類 (1) 圖片工具 (1) 模擬器 (1) 讀書分享 (1) 開發資訊 (1)

精選文章

初學 Java 的 HelloWorld 程式

撰寫一個JAVA程式 public class HelloWorld{ public static void main(String[ ] args){ System.out.println("我第一支Java程式!!"); } } ...