package dyzurbot import ( "context" "fmt" "os" "github.com/joho/godotenv" "google.golang.org/api/option" "google.golang.org/api/sheets/v4" ) // ReadSheet czyta zadany zakres z arkusza i zwraca wiersze. // spreadsheetID to ID z URL-a arkusza, readRange np. "Dyżury!A1:C30". // Klucz API jest wczytywany z pliku .env (zmienna GOOGLE_API_KEY). func ReadSheet(ctx context.Context, spreadsheetID, readRange string) ([][]interface{}, error) { // godotenv.Load nie nadpisuje już ustawionych zmiennych środowiskowych; // brak pliku .env nie jest błędem (na produkcji zmienne mogą być ustawione inaczej). _ = godotenv.Load() apiKey := os.Getenv("GOOGLE_API_KEY") if apiKey == "" { return nil, fmt.Errorf("missing GOOGLE_API_KEY in environment/.env") } srv, err := sheets.NewService(ctx, option.WithAPIKey(apiKey)) 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 }