MCPcopy Create free account
hub / github.com/openclaw/gogcli / Run

Method Run

internal/cmd/sheets_conditional.go:33–108  ·  view source on GitHub ↗
(ctx context.Context, flags *RootFlags)

Source from the content-addressed store, hash-verified

31}
32
33func (c *SheetsConditionalAddCmd) Run(ctx context.Context, flags *RootFlags) error {
34 u := ui.FromContext(ctx)
35 spreadsheetID := normalizeGoogleID(strings.TrimSpace(c.SpreadsheetID))
36 rangeSpec := cleanRange(c.Range)
37 if spreadsheetID == "" {
38 return usage("empty spreadsheetId")
39 }
40 if strings.TrimSpace(rangeSpec) == "" {
41 return usage("empty range")
42 }
43 if c.Index < 0 {
44 return usage("--index must be zero or greater")
45 }
46
47 parsedRange, err := parseSheetRange(rangeSpec, "conditional-format")
48 if err != nil {
49 return err
50 }
51 format, formatFields, err := parseConditionalFormat(c.FormatJSON, c.FormatFields, stdinReader(ctx))
52 if err != nil {
53 return err
54 }
55 conditionType, values, err := sheetsconditional.BuildCondition(strings.TrimSpace(c.Type), strings.TrimSpace(c.Expr))
56 if err != nil {
57 return sheetsConditionalPlannerError(err)
58 }
59
60 if dryErr := dryRunExit(ctx, flags, "sheets.conditional-format.add", map[string]any{
61 "spreadsheet_id": spreadsheetID,
62 "range": rangeSpec,
63 "type": conditionType,
64 "values": values,
65 "format_fields": formatFields,
66 "index": c.Index,
67 }); dryErr != nil {
68 return dryErr
69 }
70
71 account, err := requireAccount(flags)
72 if err != nil {
73 return err
74 }
75 svc, err := sheetsService(ctx, account)
76 if err != nil {
77 return err
78 }
79 sheetIDs, err := fetchSheetIDMap(ctx, svc, spreadsheetID)
80 if err != nil {
81 return err
82 }
83 gridRange, err := gridRangeFromMap(parsedRange, sheetIDs, "conditional-format")
84 if err != nil {
85 return err
86 }
87
88 req := &sheets.BatchUpdateSpreadsheetRequest{
89 Requests: []*sheets.Request{
90 sheetsconditional.BuildAddRequest(gridRange, conditionType, values, format, c.Index),

Callers

nothing calls this directly

Calls 15

FromContextFunction · 0.92
BuildConditionFunction · 0.92
BuildAddRequestFunction · 0.92
IsJSONFunction · 0.92
WriteJSONFunction · 0.92
normalizeGoogleIDFunction · 0.85
cleanRangeFunction · 0.85
usageFunction · 0.85
parseSheetRangeFunction · 0.85
parseConditionalFormatFunction · 0.85
stdinReaderFunction · 0.85

Tested by

no test coverage detected