Golang访问Google Sheet
步骤
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
4、创建凭证
保存好json文件,后续用于访问Google Sheet
5、给账号添加Sheet访问权限
给服务账号访问的Sheet加权限。
6、代码访问
package main
import (
"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
注
按照官方文档的方式,可能在授权部分被卡住