69 lines
1.3 KiB
Go
69 lines
1.3 KiB
Go
package sheet
|
|
|
|
import (
|
|
"context"
|
|
"recipe-manager/helpers"
|
|
|
|
"golang.org/x/oauth2"
|
|
"google.golang.org/api/option"
|
|
"google.golang.org/api/sheets/v4"
|
|
)
|
|
|
|
type SheetService interface {
|
|
}
|
|
|
|
type sheetService struct {
|
|
config *oauth2.Config
|
|
service *sheets.Service
|
|
}
|
|
|
|
func NewSheetService(ctx context.Context) (SheetService, error) {
|
|
clientSecret, err := helpers.GetClientSecret("client_secret.json")
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
token, err := helpers.GetToken("token.json")
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
service, err := sheets.NewService(ctx, option.WithTokenSource(clientSecret.TokenSource(ctx, token)))
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
return &sheetService{
|
|
config: clientSecret,
|
|
service: service,
|
|
}, nil
|
|
}
|
|
|
|
func (s *sheetService) GetSheet(ctx context.Context, sheetID string) {
|
|
spreadSheet, err := s.service.Spreadsheets.Get(sheetID).Do()
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
for _, sheet := range spreadSheet.Sheets {
|
|
// print data collumn C
|
|
readRange := sheet.Properties.Title + "!C:C"
|
|
resp, err := s.service.Spreadsheets.Values.Get(sheetID, readRange).Do()
|
|
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
if len(resp.Values) == 0 {
|
|
println("No data found")
|
|
} else {
|
|
for _, row := range resp.Values {
|
|
println(row[0].(string))
|
|
}
|
|
}
|
|
}
|
|
}
|