步骤
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 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
注
按照官方文档的方式,可能在授权部分被卡住