前言

我亲爱的领导又又给我安排了一项任务,
希望开发一个功能将我们数据库中数据,上传到Google Sheets,随时读取变更内容后更新回数据库。
这个Google Sheets可以理解为在线Excel。

接收到任务的我之前没有开发过在Google 开发平台上集成api。

我只能硬着头皮开发,顺便说说我的开发思路,
第一步:我需要先找开发者文档
第二步:理解文档,
第三部:写一个简单的例子

Sheets Api开发文档

历经千辛万苦,我终于找到了这个开发文档:(需要翻墙)
https://developers.google.com/sheets/api/quickstart/java



英文文档,说实话就很棒,我一遍猜测一遍使用谷歌翻译理解文档内容

1.需要java1.8以上版本(没关系,我的就是1.8)
2.需要Gradle (实验后发现Maven也可以)
3.创建一个项目 和 开启Api
4.创建一个凭证

创建项目,开启Api

创建说明:
https://developers.google.com/workspace/guides/create-project

点击这里先创建一个项目,

再进入Api设置

选择你要使用的API,我们当然是Googel sheets


最后开启这个api

创建凭据


这里根据各自的业务需求选择

这里需要注意一个问题:如果选择OAuth需要设定一个回调地址
因为第一次请求会做一个校验,googel会返回给你一个code。


最后我再下载创建好的凭据

这样我们的前期准备工作就完成了

代码

首先我们可以根据下面给的例子搭建一个demo

maven

        <dependency><groupId>com.google.api-client</groupId><artifactId>google-api-client</artifactId><version>1.30.4</version></dependency><dependency><groupId>com.google.oauth-client</groupId><artifactId>google-oauth-client-jetty</artifactId><version>1.30.6</version></dependency><dependency><groupId>com.google.apis</groupId><artifactId>google-api-services-sheets</artifactId><version>v4-rev581-1.25.0</version></dependency>

demo

这里是只是将api 文档中SheetsQuickstart 改为GoogleSheetsUtil

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.javanet.NetHttpTransport;
import com.google.api.client.json.JsonFactory;
import com.google.api.client.json.jackson2.JacksonFactory;
import com.google.api.client.util.store.FileDataStoreFactory;
import com.google.api.services.sheets.v4.Sheets;
import com.google.api.services.sheets.v4.SheetsScopes;
import com.google.api.services.sheets.v4.model.ValueRange;import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.security.GeneralSecurityException;
import java.util.Collections;
import java.util.List;public class GoogleSheetsUtil {private static final String APPLICATION_NAME = "invault";private static final JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();private static final String TOKENS_DIRECTORY_PATH = "tokens";/*** Global instance of the scopes required by this quickstart.* If modifying these scopes, delete your previously saved tokens/ folder.*/private static final List<String> SCOPES = Collections.singletonList(SheetsScopes.SPREADSHEETS_READONLY);private static final String CREDENTIALS_FILE_PATH = "/credentials.json";/*** Creates an authorized Credential object.* @param HTTP_TRANSPORT The network HTTP Transport.* @return An authorized Credential object.* @throws IOException If the credentials.json file cannot be found.*/private static Credential getCredentials(final NetHttpTransport HTTP_TRANSPORT) throws IOException {// Load client secrets.InputStream in = GoogleSheetsUtil.class.getResourceAsStream(CREDENTIALS_FILE_PATH);if (in == null) {throw new FileNotFoundException("Resource not found: " + CREDENTIALS_FILE_PATH);}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(new FileDataStoreFactory(new java.io.File(TOKENS_DIRECTORY_PATH))).setAccessType("offline").build();LocalServerReceiver receiver = new LocalServerReceiver.Builder().setPort(8888).build();return new AuthorizationCodeInstalledApp(flow, receiver).authorize("user");}/*** Prints the names and majors of students in a sample spreadsheet:* https://docs.google.com/spreadsheets/d/1BxiMVs0XRA5nFMdKvBdBZjgmUUqptlbs74OgvE2upms/edit*/public static void main(String... args) throws IOException, GeneralSecurityException {// Build a new authorized API client service.final NetHttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();final String spreadsheetId = "1CJ9oaHk_gzKrEcSyYrzXUddrY3pYC15rmZkBoh0N5Gw";final String range = "Sheet1!A2:F10";Sheets service = new Sheets.Builder(HTTP_TRANSPORT, JSON_FACTORY, getCredentials(HTTP_TRANSPORT)).setApplicationName(APPLICATION_NAME).build();ValueRange response = service.spreadsheets().values().get(spreadsheetId, range).execute();List<List<Object>> values = response.getValues();if (values == null || values.isEmpty()) {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));}}}
}

凭据

按照代码中的InputStream的路劲,我将下载后的凭据,改名为credentials.json然后放入

选择文档

最后我们选择要读取的文档id-即spreadsheetId
例如我创建的文档

接着选择读取范围
range这里改成你表格名称,例如我的就是原始的Sheet1
A2:F10 代表你要读取的范围

运行结果

最后

Java 读取Google Sheet相关推荐

  1. java读取sheet2_java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本)

    java读取Excel指定sheet页或全部sheet页数据(含2003和2007版本) 在http://download.csdn.net/detail/u010792467/8072015下载所需 ...

  2. java读取Excel内容添加到list集合里面去

    java读取Excel内容添加到list集合里面去 package com.changan.contract.newsign.utils;import com.changan.contract.xqh ...

  3. java读取jsp文件内容_使用Java读取Excel文件内容

    问题:我能用Java读取一个Excel文件吗?如果能,怎么做? 回答:是的,可以用Java读取Microsoft Excel文件.微软提供了一个Excel的ODBC驱动程序,因此我们就可以使用JDBC ...

  4. 用java读取properties文件--转

    今天为了通过java读取properties文件,google了很长时间,终于找到了.现在特记录之和大家一起分享.      下面直接贴出代码:java类 public class Mytest pu ...

  5. 使用Spark/Java读取已开启Kerberos认证的HBase

    1.赋予drguo用户相应的权限 2.KDC中创建drguo用户并导出相应的keytab文件 [root@bigdata28 ~]# kadmin.local  Authenticating as p ...

  6. 从java读取Excel继续说大道至简 .

    在上一篇博客<从复杂到简单,大道至简>中说道我们要把复杂的问题简单化,也就是要把问题细分,让大问题变成小问题,这样解决起来会相对容易,当我们把容易的小问题解决掉了,大问题自动就会迎刃而解. ...

  7. java读取与写入excel(.xls .xlsx)

    maven依赖: 首先在maven中添加: <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --><depend ...

  8. txt doc rtf html,JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例.docx

    JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例 JAVA读取WORD,EXCEL,PDF,TXT,RTF,HTML文件文本内容的方法示例??2012-06-2 ...

  9. Flex通过Java读取Excel(详细流程)----Excel在客户端(DataGrid动态根据Excel生成)

    2011-03-06 23:57:00|  分类: flex/flash |  标签:excel  flex  java  客户端  as3xls   |字号大中小  订阅 在网上查了很久的资料,就是 ...

最新文章

  1. 项目实践 | 行人跟踪与摔倒检测报警
  2. java并发编程之美-阅读记录7
  3. codeforces 842 D. Vitya and Strange Lesson(01字典树+思维+贪心)
  4. SQL Server 2008安装配置说明书+简单使用 亲测可用
  5. linux 窗口不能移动的替换命令
  6. echarts 简单词云制作,自定义图案词云echarts-wordcloud.js
  7. 【论文精读】Stable Linear Structures and Seam Measurements for Parallax Image Stitching
  8. 关于STM32F103x系列ISP烧写出现“程序文件不是0x8000000和0x20000000区域的”解决办法。
  9. Http 请求头中 X-Requested-With 的含义
  10. DDR的VTT电源应用及其优化
  11. Deepin与Debian的对应关系
  12. discuz数据字典
  13. 歌尔2718硅咪 超小体积 S15OB383-058 S15OB381-055 S15OT421-001
  14. Wiley开放科学大使访谈——刘永鑫
  15. thingsboard如何维护设备的状态的
  16. VMProtect1.63分析
  17. linux软件包管理(RPM)简单介绍
  18. 基于 Formily 的表单设计器实现原理分析 ​
  19. 应用宝---应用找回
  20. 广西计算机应用大赛怎么报名,2020年广西职业院校技能大赛参赛学校报名流程...

热门文章

  1. QUIC协议原理分析
  2. ~~~~~~~~~~~~~人品计算器~~~~~~~~~~~~~~~~~~~~~~~
  3. 阿里云云盘根目录扩容
  4. 对接企业微信应用jsSDK本地调试
  5. H5 微信 APP之间的区别
  6. 自定义VBA函数(Fucntion)怎样才能只被VBA引用?
  7. 计算机应用基础 终结性考试试题
  8. 抖音小店变现怎么玩?
  9. 广义表-求广义表深度,建立广义表,复制广义表
  10. 计算机无线网络服务禁用了怎么办,无线网络禁用启用无效怎么办_无线禁用后启用不了的解决方法...