Package spreadsheet
provides fast and easy-to-use access to the Google Sheets API for reading and updating spreadsheets.
Any pull-request is welcome.
go get gopkg.in/Iwark/spreadsheet.v2
This package uses oauth2 client for authentication. You need to get service account key from Google Developer Console. Place the client_secret.json
to the root of your project.
First you need service to start using this package.
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:
service, err := spreadsheet.NewService()
spreadsheetID := "1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4"
spreadsheet, err := service.FetchSpreadsheet(spreadsheetID)
ss, err := service.CreateSpreadsheet(spreadsheet.Spreadsheet{
Properties: spreadsheet.Properties{
Title: "spreadsheet title",
},
})
// 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 the B1 cell content
sheet.Rows[0][1].Value
// get the A2 cell content
sheet.Columns[0][1].Value
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()
err := service.ExpandSheet(sheet, 20, 10) // Expand the sheet to 20 rows and 10 columns
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.
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())
}
}
Spreadsheet is released under the MIT License.