Categorygithub.com/shaglund/spreadsheet
modulepackage
0.0.0-20220328074737-81f9504a31cf
Repository: https://github.com/shaglund/spreadsheet.git
Documentation: pkg.go.dev

# README

spreadsheet

Build Status Coverage Status GoReport GoDoc 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. Place the client_secret.json to the root of your project.

Usage

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()

Fetching a spreadsheet

spreadsheetID := "1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4"
spreadsheet, err := service.FetchSpreadsheet(spreadsheetID)

Create a spreadsheet

ss, err := service.CreateSpreadsheet(spreadsheet.Spreadsheet{
	Properties: spreadsheet.Properties{
		Title: "spreadsheet title",
	},
})

Find a sheet

// 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

// get the B1 cell content
sheet.Rows[0][1].Value

// get the A2 cell content
sheet.Columns[0][1].Value

Update cell content

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

err := service.ExpandSheet(sheet, 20, 10) // Expand the sheet to 20 rows and 10 columns

Delete Rows / 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.

Example

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.

# Functions

NewService makes a new service with the secret file.
NewServiceWithClient makes a new service by the client.
WithCache gives a cacheInterval option for FetchSpreadsheet function.

# Constants

Scope is the API scope for viewing and managing your Google Spreadsheet data.
SecretFileName is used to get client.

# Structs

Cell describes a cell data.
CellData is data about a specific cell.
DimensionProperties is properties about a dimension.
ErrorValue is an error in a cell.
ExtendedValue is the kinds of value that a cell in a spreadsheet can have.
GridData is data in the grid, as well as metadata about the dimensions.
GridProperties is properties of a grid.
Properties is properties of a spreadsheet.
RowData is data about each cell in a row.
Service represents a Sheets API service instance.
Sheet is a sheet in a spreadsheet.
SheetData is data of the sheet.
SheetProperties is properties of a sheet.
Spreadsheet represents a spreadsheet.
TabColor is color of a tab.

# Type aliases

FetchSpreadsheetOption is the option for FetchSpreadsheet function.