-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsheet.go
More file actions
82 lines (66 loc) · 1.98 KB
/
sheet.go
File metadata and controls
82 lines (66 loc) · 1.98 KB
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
package main
import (
"context"
"fmt"
"log"
"os"
"time"
"google.golang.org/api/option"
"google.golang.org/api/sheets/v4"
"golang.org/x/oauth2/google"
)
func notifySheet(name string, namespace string, environment string, tag string, message string) {
spreadsheetID := os.Getenv("SPREADSHEET_ID")
if spreadsheetID == "" {
log.Println("SPREADSHEET_ID is not set")
return
}
tokenStr := os.Getenv("GOOGLE_SHEETS_TOKEN")
if tokenStr == "" {
log.Println("GOOGLE_SHEETS_TOKEN environment variable is not set")
return
}
cfg, err := google.JWTConfigFromJSON([]byte(tokenStr), sheets.SpreadsheetsScope)
if err != nil {
fmt.Errorf("unable to parse client secret file to config: %w", err)
return
}
client := cfg.Client(context.Background())
srv, err := sheets.NewService(context.Background(), option.WithHTTPClient(client))
if err != nil {
fmt.Errorf("unable to retrieve Sheets client: %w", err)
return
}
// Get spreadsheet details to find the first sheet's name
spreadsheet, err := srv.Spreadsheets.Get(spreadsheetID).Do()
if err != nil {
log.Printf("Unable to retrieve spreadsheet details: %v", err)
return
}
if len(spreadsheet.Sheets) == 0 {
log.Printf("No sheets found in the spreadsheet")
return
}
// Get the first sheet's title
firstSheetName := spreadsheet.Sheets[0].Properties.Title
fmt.Printf("Appending to the first sheet: %s\n", firstSheetName)
// Define range (appending to first available row)
rangeToAppend := firstSheetName + "!A1"
currentTime := time.Now().Format("2006-01-02 15:04:05")
values := [][]interface{}{
{currentTime, name, tag, environment, currentTime, message},
}
// Prepare request
rb := &sheets.ValueRange{
Values: values,
}
_, err = srv.Spreadsheets.Values.Append(spreadsheetID, rangeToAppend, rb).
ValueInputOption("USER_ENTERED"). // Use "RAW" for no formatting
InsertDataOption("INSERT_ROWS").
Do()
if err != nil {
log.Printf("Unable to append data: %v", err)
return
}
fmt.Println("Row appended successfully!")
}