Golang访问Google Sheet

server/2025/2/23 0:08:00/

步骤

1、创建Project

https://console.cloud.google.com/welcome?hl=zh-cn&project=velvety-being-444310-c1
在这里插入图片描述

2、启用Google Sheet API

https://console.cloud.google.com/apis/library?hl=zh-cn&project=velvety-being-444310-c1
在这里插入图片描述

3、创建服务账号

https://console.cloud.google.com/apis/credentials?hl=zh-cn&project=velvety-being-444310-c1
在这里插入图片描述
![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/43fef234ba6144609481ead2c4006531.png

4、创建凭证

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

保存好json文件,后续用于访问Google Sheet

5、给账号添加Sheet访问权限

在这里插入图片描述

给服务账号访问的Sheet加权限。

6、代码访问

package mainimport ("context""fmt""io/ioutil""log""os""golang.org/x/oauth2/google""google.golang.org/api/option""google.golang.org/api/sheets/v4"
)func main() {// 读取 Service Account 的密钥文件keyFile, err := os.Open("velvety-being-444310-c1-3a10be6dc2f5.json")if err != nil {log.Fatalf("无法打开密钥文件:%v", err)}defer keyFile.Close()// 解析密钥文件keyBytes, err := ioutil.ReadAll(keyFile)if err != nil {log.Fatalf("无法读取密钥文件:%v", err)}config, err := google.JWTConfigFromJSON(keyBytes, sheets.SpreadsheetsScope)if err != nil {log.Fatalf("无法解析密钥文件:%v", err)}// 创建 Google Sheets 服务客户端client := config.Client(context.Background())// 创建 Sheets 服务对象sheetsService, err := sheets.NewService(context.Background(), option.WithHTTPClient(client))if err != nil {log.Fatalf("无法创建 Sheets 服务:%v", err)}// 使用 Sheets 服务对象进行操作// ...// 指定要访问的 Google Sheets 文档和工作表spreadsheetID := "1WhXyvPyqUCX8oxWKiMHns588UKdCaUl6NIYchmLB_gE"sheetName := "Final Output" // 替换为你要访问的工作表的名称readRange := fmt.Sprintf("%s!AC:BP", sheetName)// 通过 Sheets 服务对象获取指定的工作表resp, err := sheetsService.Spreadsheets.Values.Get(spreadsheetID, readRange).Do()if err != nil {log.Fatalf("无法获取 Google Sheets 文档:%v", err)}// 查找指定名称的工作表if len(resp.Values) == 0 {fmt.Println("未找到数据")} else {fmt.Println("读取到的数据:")for _, row := range resp.Values {for _, value := range row {fmt.Printf("%s\t", value)}fmt.Println()}}fmt.Println("成功访问 Google Sheets!")
}

参考文档

官方文档:https://developers.google.com/sheets/api/quickstart/go?hl=zh-cn

按照官方文档的方式,可能在授权部分被卡住
在这里插入图片描述在这里插入图片描述


http://www.ppmy.cn/server/169978.html

相关文章

Maven导入hutool依赖报错-java: 无法访问cn.hutool.core.io.IORuntimeException 解决办法

欢迎大家来到我的博客~欢迎大家对我的博客提出指导&#xff0c;有错误的地方会改进的哦~点击这里了解更多内容 目录 一、报错二、解决办法 一、报错 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-captcha</artifactId> </de…

QT开发技术 [opencv加载onnx模型,dnn推理]

一、导出onnx 模型 yolo export modelxx\xx\best.pt formatonnx 二、qt加载onnx模型&#xff0c;推理显示 std::string fileName QCoreApplication::applicationDirPath().toStdString() "/Model/best.onnx";cv::dnn::Net net cv::dnn::readNetFromONNX(fileNam…

MYSQL的第一次

目录 前情提要 题目解析 连接并使用数据库 创建employees表 创建orders表? 创建invoices表?? ?查看建立的表 前情提要 需要下载mysql并进行配置&#xff0c;建议下载8.0.37&#xff0c;详情可见MySQL超详细安装配置教程(亲测有效)_mysql安装教程-CSDN博客 题目解析…

RabbitMQ介绍以及基本使用

文章目录 一、什么是消息队列&#xff1f; 二、消息队列的作用&#xff08;优点&#xff09; 1、解耦 2、流量削峰 3、异步 4、顺序性 三、RabbitMQ基本结构 四、RabbitMQ队列模式 1、简单队列模式 2、工作队列模式 3、发布/订阅模式 4、路由模式 5、主题模式 6、…

OpenMetadata MySQL数据质量治理实现分析

架构概览 #mermaid-svg-avONKLWf2EfDAaLY {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-avONKLWf2EfDAaLY .error-icon{fill:#552222;}#mermaid-svg-avONKLWf2EfDAaLY .error-text{fill:#552222;stroke:#552222;}#…

【深度学习】Python多线程/多进程在神经网络模型的应用实战

一、Pyhon多线程和多进程的理解和对比分析 1. 基本概念 1.1 多线程 定义&#xff1a;多线程是指一个程序同时运行多个线程&#xff0c;每个线程共享同一进程的内存空间。 特点&#xff1a; 线程之间可以共享全局变量、文件句柄等资源。线程切换开销较小&#xff0c;适合 I/…

矩阵-旋转图像

旋转图像 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。你必须在 原地 旋转图像&#xff0c;这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。输入&#xff1a;二维数组 输出&#xff1a;void 思路&#xff1a;tempM…

五档历史Level2行情数据:期货市场的信息宝库

五档历史Level2行情数据&#xff1a;期货市场的信息宝库 为了促进学习和研究&#xff0c;我们在此分享一部分匿名处理的Level2高频Tick数据。 历史期货高频tick五档level2链接: https://pan.baidu.com/s/132FzyihmcRtKVgQohtLUBw?pwdsigv 提取码: sigv请注意&#xff0c;分享…