https://github.com/Iwark/spreadsheet
Google Go (golang) library for reading and writing spreadsheet files on Google Docs.
https://github.com/Iwark/spreadsheet
go golang spreadsheet
Last synced: 7 months ago
JSON representation
Google Go (golang) library for reading and writing spreadsheet files on Google Docs.
- Host: GitHub
- URL: https://github.com/Iwark/spreadsheet
- Owner: Iwark
- License: mit
- Created: 2016-02-01T09:45:48.000Z (almost 10 years ago)
- Default Branch: v2
- Last Pushed: 2023-09-15T04:03:05.000Z (about 2 years ago)
- Last Synced: 2024-11-04T14:44:26.556Z (about 1 year ago)
- Topics: go, golang, spreadsheet
- Language: Go
- Homepage:
- Size: 68.4 KB
- Stars: 382
- Watchers: 9
- Forks: 53
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ccamel - Iwark/spreadsheet - Google Go (golang) library for reading and writing spreadsheet files on Google Docs. (Go)
README
spreadsheet
===
[](https://travis-ci.org/Iwark/spreadsheet)
[](https://coveralls.io/github/Iwark/spreadsheet?branch=v2)
[](http://goreportcard.com/report/Iwark/spreadsheet)
[](https://godoc.org/gopkg.in/Iwark/spreadsheet.v2)
[](LICENSE)
Package `spreadsheet` provides fast and easy-to-use access to the Google Sheets API for reading and updating spreadsheets.
Any pull-request is welcome.
## Installation
```
go get gopkg.in/Iwark/spreadsheet.v2
```
## Preparation
This package uses oauth2 client for authentication. You need to get service account key from [Google Developer Console](https://console.developers.google.com/project). Place the ``client_secret.json`` to the root of your project.
## Usage
First you need **service** to start using this package.
```go
data, err := ioutil.ReadFile("client_secret.json")
checkError(err)
conf, err := google.JWTConfigFromJSON(data, spreadsheet.Scope)
checkError(err)
client := conf.Client(context.TODO())
service := spreadsheet.NewServiceWithClient(client)
```
Or there is a shortcut which does the same things:
```go
service, err := spreadsheet.NewService()
```
### Fetching a spreadsheet
```go
spreadsheetID := "1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4"
spreadsheet, err := service.FetchSpreadsheet(spreadsheetID)
```
### Create a spreadsheet
```go
ss, err := service.CreateSpreadsheet(spreadsheet.Spreadsheet{
Properties: spreadsheet.Properties{
Title: "spreadsheet title",
},
})
```
### Find a sheet
```go
// get a sheet by the index.
sheet, err := spreadsheet.SheetByIndex(0)
// get a sheet by the ID.
sheet, err := spreadsheet.SheetByID(0)
// get a sheet by the title.
sheet, err := spreadsheet.SheetByTitle("SheetTitle")
```
### Get cells
```go
// get the B1 cell content
sheet.Rows[0][1].Value
// get the A2 cell content
sheet.Columns[0][1].Value
```
### Update cell content
```go
row := 1
column := 2
sheet.Update(row, column, "hogehoge")
sheet.Update(3, 2, "fugafuga")
// Make sure call Synchronize to reflect the changes.
err := sheet.Synchronize()
```
### Expand a sheet
```go
err := service.ExpandSheet(sheet, 20, 10) // Expand the sheet to 20 rows and 10 columns
```
### Delete Rows / Columns
```go
err := sheet.DeleteRows(0, 3) // Delete first three rows in the sheet
err := sheet.DeleteColumns(1, 4) // Delete columns B:D
```
More usage can be found at the [godoc](https://godoc.org/gopkg.in/Iwark/spreadsheet.v2).
## Example
```go
package main
import (
"fmt"
"io/ioutil"
"gopkg.in/Iwark/spreadsheet.v2"
"golang.org/x/net/context"
"golang.org/x/oauth2/google"
)
func main() {
data, err := ioutil.ReadFile("client_secret.json")
checkError(err)
conf, err := google.JWTConfigFromJSON(data, spreadsheet.Scope)
checkError(err)
client := conf.Client(context.TODO())
service := spreadsheet.NewServiceWithClient(client)
spreadsheet, err := service.FetchSpreadsheet("1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4")
checkError(err)
sheet, err := spreadsheet.SheetByIndex(0)
checkError(err)
for _, row := range sheet.Rows {
for _, cell := range row {
fmt.Println(cell.Value)
}
}
// Update cell content
sheet.Update(0, 0, "hogehoge")
// Make sure call Synchronize to reflect the changes
err = sheet.Synchronize()
checkError(err)
}
func checkError(err error) {
if err != nil {
panic(err.Error())
}
}
```
## License
Spreadsheet is released under the MIT License.