/
table_googlesheets_csv.go
44 lines (40 loc) · 1.41 KB
/
table_googlesheets_csv.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package googlesheets
import (
"context"
"github.com/turbot/steampipe-plugin-sdk/v5/plugin"
)
func listSpreadsheetWithPath(ctx context.Context, p *plugin.TableMapData, sheetName string) func(ctx context.Context, d *plugin.QueryData, _ *plugin.HydrateData) (interface{}, error) {
return func(ctx context.Context, d *plugin.QueryData, _ *plugin.HydrateData) (interface{}, error) {
// Get spreadsheet details
spreadsheetData, err := getSpreadsheetData(ctx, p, []string{sheetName})
if err != nil {
return nil, err
}
spreadsheetHeaders := googleSpreadsheetHeadersMap[sheetName]
for _, sheet := range spreadsheetData {
for _, i := range sheet.Data {
for row_count, row := range i.RowData {
// Skip first row, or header
if row_count == 0 {
continue
}
rowData := map[string]string{}
for col_count, value := range row.Values {
if col_count >= len(spreadsheetHeaders) {
continue
}
mergeRow, mergeColumn, parentRow, parentColumn := findMergeCells(sheet.Merges, int64(row_count+1), int64(col_count+1))
if mergeRow != nil && mergeColumn != nil {
parentData := i.RowData[*parentRow-1].Values[*parentColumn-1]
rowData[spreadsheetHeaders[col_count]] = parentData.FormattedValue
} else {
rowData[spreadsheetHeaders[col_count]] = value.FormattedValue
}
}
d.StreamListItem(ctx, rowData)
}
}
}
return nil, nil
}
}