Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/takuoki/gsheets

A golang wrapper package for "golang.org/x/oauth2" and "google.golang.org/api/sheets/v4"
https://github.com/takuoki/gsheets

go golang google-sheets google-spreadsheet spreadsheet

Last synced: about 2 months ago
JSON representation

A golang wrapper package for "golang.org/x/oauth2" and "google.golang.org/api/sheets/v4"

Awesome Lists containing this project

README

        

# gsheets

[![CircleCI](https://circleci.com/gh/takuoki/gsheets/tree/master.svg?style=shield&circle-token=30f6e95108024e7a0562f630c69209783e5086ec)](https://circleci.com/gh/takuoki/gsheets/tree/master)
[![codecov](https://codecov.io/gh/takuoki/gsheets/branch/master/graph/badge.svg)](https://codecov.io/gh/takuoki/gsheets)
[![GoDoc](https://godoc.org/github.com/takuoki/gsheets?status.svg)](https://godoc.org/github.com/takuoki/gsheets)
[![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE)

A golang wrapper package for `golang.org/x/oauth2` and `google.golang.org/api/sheets/v4`.
You can easily manipulate spreadsheets.

**!!! Only for personal use !!!**

## Installation

```bash
go get github.com/takuoki/gsheets
```

## Requirement

This package uses Google OAuth2.0. So before executing tool, you have to prepare credentials.json.
See [Go Quickstart](https://developers.google.com/sheets/api/quickstart/go), or [Blog (Japanese)](https://medium.com/veltra-engineering/how-to-use-google-sheets-api-with-golang-9e50ee9e0abc) for the details.

## Usage

### Create Cache

If you want to use the cache, initialize the context.
If you are updating sheets, you should not use Cache.

```go
ctx := gsheets.WithCache(ctx)
```

### Create New Client

```go
client, err := gsheets.New(ctx, `{"credentials": "json"}`, `{"token": "json"}`)
```

```go
client, err := gsheets.NewForCLI(ctx, "credentials.json")
```

If you are updating sheets, create a client with `ClientWritable` option.

```go
client, err := gsheets.New(ctx, `{"credentials": "json"}`, `{"token": "json"}`, gsheets.ClientWritable())
```

### Get Sheet Information

```go
func (*Client) GetTitle(ctx context.Context, spreadsheetID string) (string, error)
```

```go
func (*Client) GetSheetNames(ctx context.Context, spreadsheetID string) ([]string, error)
```

```go
func (*Client) GetSheet(ctx context.Context, spreadsheetID, sheetName string) (Sheet, error)
```

### Update Sheet Values

```go
func (c *Client) Update(ctx context.Context, spreadsheetID, sheetName string, rowNo int, values []interface{}) error
```

```go
func (c *Client) BatchUpdate(ctx context.Context, spreadsheetID string, updateValues ...UpdateValue) error
```

### Manipulate Sheet Values

If the index is out of range, `Value` method returns empty string.

```go
s, err := client.GetSheet(ctx, "spreadsheetID", "sheetName")
if err != nil {
return err
}

fmt.Println(s.Value(row, clm))

for _, r := range s.Rows() {
fmt.Println(r.Value(clm))
}
```