Golang google sheets API V4-编写/更新示例?
试图用Go编写一个简单的三列表(Golang google sheets API V4-编写/更新示例?,go,google-sheets,Go,Google Sheets,试图用Go编写一个简单的三列表([]string),但无法。 指南很好,我现在可以阅读工作表了,但是没有任何关于如何将数据写入工作表的例子,也许它很琐碎,但对我来说似乎不是。 对我大脑的影响太复杂了,弄不清楚。 没有一个例子我可以用谷歌搜索 这看起来很接近,但我不确定我是否清楚地理解C#经过一些试用,有一个答案。一切都是一样的,只是在主要功能的变化 func write() { ctx := context.Background() b, err := ioutil.ReadFi
[]string
),但无法。
指南很好,我现在可以阅读工作表了,但是没有任何关于如何将数据写入工作表的例子,也许它很琐碎,但对我来说似乎不是。
对我大脑的影响太复杂了,弄不清楚。
没有一个例子我可以用谷歌搜索
这看起来很接近,但我不确定我是否清楚地理解C#经过一些试用,有一个答案。一切都是一样的,只是在主要功能的变化
func write() {
ctx := context.Background()
b, err := ioutil.ReadFile("./Google_Sheets_API_Quickstart/client_secret.json")
if err != nil {
log.Fatalf("Unable to read client secret file: %v", err)
}
// If modifying these scopes, delete your previously saved credentials
// at ~/.credentials/sheets.googleapis.com-go-quickstart.json
config, err := google.ConfigFromJSON(b, "https://www.googleapis.com/auth/spreadsheets")
if err != nil {
log.Fatalf("Unable to parse client secret file to config: %v", err)
}
client := getClient(ctx, config)
srv, err := sheets.New(client)
if err != nil {
log.Fatalf("Unable to retrieve Sheets Client %v", err)
}
spreadsheetId := "YOUR SPREADSHEET ID"
writeRange := "A1"
var vr sheets.ValueRange
myval := []interface{}{"One", "Two", "Three"}
vr.Values = append(vr.Values, myval)
_, err = srv.Spreadsheets.Values.Update(spreadsheetId, writeRange, &vr).ValueInputOption("RAW").Do()
if err != nil {
log.Fatalf("Unable to retrieve data from sheet. %v", err)
}
}
如果您正在寻找基于服务帐户的身份验证,那么以下内容对我很有用 从下载服务帐户的客户端机密文件
spreadsheets.readonly
更改为spreadsheets
,以便进行r/w访问这应该行得通:投票赞成承认有些事情太复杂,你的大脑无法理解。有些人似乎认为,您可以阅读的代码的存在是不创建好文档的理由——我不是这些人中的一员。对于那些不想处理交互式OAuth2权限过程(即您希望它是服务器端的)的人来说,这是一个极好的方法。拿到钥匙,你就完了。这里唯一的问题是,服务帐户必须被指定为项目所有者,然后您将所需的工作表与帐户的电子邮件共享。这里描述了该过程
import (
"fmt"
"golang.org/x/net/context"
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
"log"
)
const (
client_secret_path = "./credentials/client_secret.json"
)
func NewSpreadsheetService() (*SpreadsheetService, error) {
// Service account based oauth2 two legged integration
ctx := context.Background()
srv, err := sheets.NewService(ctx, option.WithCredentialsFile(client_secret_path), option.WithScopes(sheets.SpreadsheetsScope))
if err != nil {
log.Fatalf("Unable to retrieve Sheets Client %v", err)
}
c := &SpreadsheetService{
service: srv,
}
return c, nil
}
func (s *SpreadsheetService) WriteToSpreadsheet(object *SpreadsheetPushRequest) error {
var vr sheets.ValueRange
vr.Values = append(vr.Values, object.Values)
res, err := s.service.Spreadsheets.Values.Append(object.SpreadsheetId, object.Range, &vr).ValueInputOption("RAW").Do()
fmt.Println("spreadsheet push ", res)
if err != nil {
fmt.Println("Unable to update data to sheet ", err)
}
return err
}
type SpreadsheetPushRequest struct {
SpreadsheetId string `json:"spreadsheet_id"`
Range string `json:"range"`
Values []interface{} `json:"values"`
}
writeRange := "A1" // or "sheet1:A1" if you have a different sheet
values := []interface{}{"It worked!"}
var vr sheets.ValueRange
vr.Values = append(vr.Values,values
_, err = srv.Spreadsheets.Values.Update(spreadsheetId,writeRange,&vr).ValueInputOption("RAW").Do()