Skip to content

Commit

Permalink
fix: handled error for findCellRangeAndHeaders
Browse files Browse the repository at this point in the history
  • Loading branch information
deejiw committed Oct 5, 2023
1 parent ad99812 commit 169d752
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 8 deletions.
18 changes: 18 additions & 0 deletions examples/sheets.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@

import { Gcp } from 'k6/x/gcp';

const jsonKey = JSON.parse(open('credentials.json'))

const gcp = new Gcp({
key: jsonKey,
scope: ['https://www.googleapis.com/auth/spreadsheets'], // Default value
})
export default function() {
const spreadsheetId = "xxx"
const id = gcp.spreadsheetAppendWithUniqueId(spreadsheetId, 'sheetName', {
id: 1,
name: "foo",
})

console.log(id)
}
33 changes: 25 additions & 8 deletions sheet.go → sheets.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ func (g *Gcp) SpreadsheetGet(spreadsheetId string, sheetName string, cellRange s
}

if len(res.Values) == 0 {
fmt.Printf("No data found in range %s on sheet %s.", cellRange, sheetName)
return nil, nil
return nil, fmt.Errorf("no data found in range %s on sheet %s", cellRange, sheetName)
}

return res.Values, nil
Expand Down Expand Up @@ -96,7 +95,10 @@ func (g *Gcp) SpreadsheetUpdate(spreadsheetId string, sheetName string, cellRang
// - map[string]interface{}: a map of the row data if a match is found.
// - error: an error if one occurred, otherwise nil.
func (g *Gcp) SpreadsheetGetRowByFilters(spreadsheetId string, sheetName string, filters map[string]string) (map[string]interface{}, error) {
cellRange, headers := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
cellRange, headers, err := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
if err != nil {
return nil, err
}
rows, _ := g.SpreadsheetGet(spreadsheetId, sheetName, cellRange)

// Find matching rows based on the filters
Expand Down Expand Up @@ -130,7 +132,11 @@ func (g *Gcp) SpreadsheetAppendWithUniqueId(spreadsheetId string, sheetName stri
ctx := context.Background()
g.sheetClient()

_, headers := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
_, headers, err := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
if err != nil {
return 0, err
}

rows, _ := g.SpreadsheetGet(spreadsheetId, sheetName, "A:A")
id := getUniqueId(rows)
values["id"] = id
Expand All @@ -152,7 +158,10 @@ func (g *Gcp) SpreadsheetGetUniqueIdByFiltersAndAppendIfNotExist(spreadsheetId s
ctx := context.Background()
g.sheetClient()

_, headers := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
_, headers, err := g.findCellRangeAndHeaders(spreadsheetId, sheetName)
if err != nil {
return 0, err
}

rowByFilters, _ := g.SpreadsheetGetRowByFilters(spreadsheetId, sheetName, filters)
rows, _ := g.SpreadsheetGet(spreadsheetId, sheetName, "A:A")
Expand Down Expand Up @@ -212,7 +221,15 @@ func (g *Gcp) sheetClient() {
// - sheetName: the name of the sheet to retrieve data from.
// Returns:
// - string: the cell range of the first row.
func (g *Gcp) findCellRangeAndHeaders(spreadsheetId string, sheetName string) (string, []interface{}) {
rows, _ := g.SpreadsheetGet(spreadsheetId, sheetName, "1:1")
return fmt.Sprintf("A:%s", columnIndexToLetter(len(rows[0])-1)), rows[0]
func (g *Gcp) findCellRangeAndHeaders(spreadsheetId string, sheetName string) (string, []interface{}, error) {
rows, err := g.SpreadsheetGet(spreadsheetId, sheetName, "1:1")
if err != nil {
return "", nil, err
}

if len(rows) < 1 {
return "", nil, fmt.Errorf("no headers found on sheet %s!%s", spreadsheetId, sheetName)
}

return fmt.Sprintf("A:%s", columnIndexToLetter(len(rows[0])-1)), rows[0], nil
}
File renamed without changes.

0 comments on commit 169d752

Please sign in to comment.