From 335e698e5e0cdaf078ca8b1e4e33522790c028b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kamil=20=27Kama=C5=9B=27=20Bruchal?= Date: Wed, 17 Jun 2026 19:25:24 +0200 Subject: [PATCH] Feat: ReadSheet implemented --- fetch-sheet.go | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/fetch-sheet.go b/fetch-sheet.go index e69de29..721c119 100644 --- a/fetch-sheet.go +++ b/fetch-sheet.go @@ -0,0 +1,32 @@ +package rota + +import ( + "context" + "fmt" + + "google.golang.org/api/option" + "google.golang.org/api/sheets/v4" +) + +// ReadRota czyta zadany zakres z arkusza i zwraca wiersze. +// spreadsheetID to ID z URL-a arkusza, readRange np. "Dyżury!A1:C30". +func ReadSheet(ctx context.Context, credsPath, spreadsheetID, readRange string) ([][]interface{}, error) { + srv, err := sheets.NewService(ctx, + option.WithAuthCredentialsFile(option.ServiceAccount, credsPath), + option.WithScopes(sheets.SpreadsheetsReadonlyScope), + ) + if err != nil { + return nil, fmt.Errorf("init sheets service: %w", err) + } + + resp, err := srv.Spreadsheets.Values. + Get(spreadsheetID, readRange). + ValueRenderOption("UNFORMATTED_VALUE"). // surowe wartości, bez formatowania komórek + Context(ctx). + Do() + if err != nil { + return nil, fmt.Errorf("get values %q: %w", readRange, err) + } + + return resp.Values, nil +}