{"id":13562226,"url":"https://github.com/Iwark/spreadsheet","last_synced_at":"2025-04-03T18:33:03.767Z","repository":{"id":38360211,"uuid":"50829876","full_name":"Iwark/spreadsheet","owner":"Iwark","description":"Google Go (golang) library for reading and writing spreadsheet files on Google Docs.","archived":false,"fork":false,"pushed_at":"2023-09-15T04:03:05.000Z","size":70,"stargazers_count":382,"open_issues_count":17,"forks_count":53,"subscribers_count":9,"default_branch":"v2","last_synced_at":"2024-11-04T14:44:26.556Z","etag":null,"topics":["go","golang","spreadsheet"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Iwark.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-02-01T09:45:48.000Z","updated_at":"2024-09-30T14:01:23.000Z","dependencies_parsed_at":"2024-06-18T13:39:41.402Z","dependency_job_id":"ec5ab543-9da4-4189-aee7-6d9a37cdd762","html_url":"https://github.com/Iwark/spreadsheet","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iwark%2Fspreadsheet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iwark%2Fspreadsheet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iwark%2Fspreadsheet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Iwark%2Fspreadsheet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Iwark","download_url":"https://codeload.github.com/Iwark/spreadsheet/tar.gz/refs/heads/v2","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247056964,"owners_count":20876484,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","golang","spreadsheet"],"created_at":"2024-08-01T13:01:05.958Z","updated_at":"2025-04-03T18:32:58.758Z","avatar_url":"https://github.com/Iwark.png","language":"Go","readme":"spreadsheet\n===\n[![Build Status](https://travis-ci.org/Iwark/spreadsheet.svg?branch=v2)](https://travis-ci.org/Iwark/spreadsheet)\n[![Coverage Status](https://coveralls.io/repos/github/Iwark/spreadsheet/badge.svg?branch=v2)](https://coveralls.io/github/Iwark/spreadsheet?branch=v2)\n[![GoReport](https://goreportcard.com/badge/Iwark/spreadsheet)](http://goreportcard.com/report/Iwark/spreadsheet)\n[![GoDoc](https://godoc.org/gopkg.in/Iwark/spreadsheet.v2?status.svg)](https://godoc.org/gopkg.in/Iwark/spreadsheet.v2)\n[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)\n\nPackage `spreadsheet` provides fast and easy-to-use access to the Google Sheets API for reading and updating spreadsheets.\n\nAny pull-request is welcome.\n\n## Installation\n\n```\ngo get gopkg.in/Iwark/spreadsheet.v2\n```\n\n## Preparation\n\nThis 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.\n\n## Usage\n\nFirst you need **service** to start using this package.\n\n```go\ndata, err := ioutil.ReadFile(\"client_secret.json\")\ncheckError(err)\n\nconf, err := google.JWTConfigFromJSON(data, spreadsheet.Scope)\ncheckError(err)\n\nclient := conf.Client(context.TODO())\nservice := spreadsheet.NewServiceWithClient(client)\n```\n\nOr there is a shortcut which does the same things:\n\n```go\nservice, err := spreadsheet.NewService()\n```\n\n### Fetching a spreadsheet\n\n```go\nspreadsheetID := \"1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4\"\nspreadsheet, err := service.FetchSpreadsheet(spreadsheetID)\n```\n\n### Create a spreadsheet\n\n```go\nss, err := service.CreateSpreadsheet(spreadsheet.Spreadsheet{\n\tProperties: spreadsheet.Properties{\n\t\tTitle: \"spreadsheet title\",\n\t},\n})\n```\n\n### Find a sheet\n\n```go\n// get a sheet by the index.\nsheet, err := spreadsheet.SheetByIndex(0)\n\n// get a sheet by the ID.\nsheet, err := spreadsheet.SheetByID(0)\n\n// get a sheet by the title.\nsheet, err := spreadsheet.SheetByTitle(\"SheetTitle\")\n```\n\n### Get cells\n\n```go\n// get the B1 cell content\nsheet.Rows[0][1].Value\n\n// get the A2 cell content\nsheet.Columns[0][1].Value\n```\n\n### Update cell content\n\n```go\nrow := 1\ncolumn := 2\nsheet.Update(row, column, \"hogehoge\")\nsheet.Update(3, 2, \"fugafuga\")\n\n// Make sure call Synchronize to reflect the changes.\nerr := sheet.Synchronize()\n```\n\n### Expand a sheet\n\n```go\nerr := service.ExpandSheet(sheet, 20, 10) // Expand the sheet to 20 rows and 10 columns\n```\n\n### Delete Rows / Columns\n\n```go\nerr := sheet.DeleteRows(0, 3) // Delete first three rows in the sheet\n\nerr := sheet.DeleteColumns(1, 4) // Delete columns B:D\n```\n\nMore usage can be found at the [godoc](https://godoc.org/gopkg.in/Iwark/spreadsheet.v2).\n\n## Example\n\n```go\npackage main\n\nimport (\n\t\"fmt\"\n\t\"io/ioutil\"\n\n\t\"gopkg.in/Iwark/spreadsheet.v2\"\n\t\"golang.org/x/net/context\"\n\t\"golang.org/x/oauth2/google\"\n)\n\nfunc main() {\n\tdata, err := ioutil.ReadFile(\"client_secret.json\")\n\tcheckError(err)\n\tconf, err := google.JWTConfigFromJSON(data, spreadsheet.Scope)\n\tcheckError(err)\n\tclient := conf.Client(context.TODO())\n\n\tservice := spreadsheet.NewServiceWithClient(client)\n\tspreadsheet, err := service.FetchSpreadsheet(\"1mYiA2T4_QTFUkAXk0BE3u7snN2o5FgSRqxmRrn_Dzh4\")\n\tcheckError(err)\n\tsheet, err := spreadsheet.SheetByIndex(0)\n\tcheckError(err)\n\tfor _, row := range sheet.Rows {\n\t\tfor _, cell := range row {\n\t\t\tfmt.Println(cell.Value)\n\t\t}\n\t}\n\n\t// Update cell content\n\tsheet.Update(0, 0, \"hogehoge\")\n\n\t// Make sure call Synchronize to reflect the changes\n\terr = sheet.Synchronize()\n\tcheckError(err)\n}\n\nfunc checkError(err error) {\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n```\n\n## License\n\nSpreadsheet is released under the MIT License.\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIwark%2Fspreadsheet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FIwark%2Fspreadsheet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FIwark%2Fspreadsheet/lists"}