Google Go (golang) library for reading and writing spreadsheet files on Google Docs.
Package
spreadsheetprovides 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.jsonto 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 sheeterr := sheet.DeleteColumns(1, 4) // Delete columns B:D
More usage can be found at the godoc.
package mainimport ( "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.