Skip to content

Commit 4c98edf

Browse files
authored
Merge pull request #843 from googlecodelabs/Add-GA4-1
Add GA4 analytics support to claat
2 parents 57b79d1 + b293135 commit 4c98edf

File tree

5 files changed

+34
-21
lines changed

5 files changed

+34
-21
lines changed

claat/parser/md/parse.go

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,17 +45,18 @@ import (
4545

4646
// Metadata constants for the YAML header
4747
const (
48-
MetaAuthors = "authors"
49-
MetaSummary = "summary"
50-
MetaID = "id"
51-
MetaCategories = "categories"
52-
MetaEnvironments = "environments"
53-
MetaStatus = "status"
54-
MetaFeedbackLink = "feedback_link"
55-
MetaAnalyticsAccount = "analytics_account"
56-
MetaTags = "tags"
57-
MetaSource = "source"
58-
MetaDuration = "duration"
48+
MetaAuthors = "authors"
49+
MetaSummary = "summary"
50+
MetaID = "id"
51+
MetaCategories = "categories"
52+
MetaEnvironments = "environments"
53+
MetaStatus = "status"
54+
MetaFeedbackLink = "feedback_link"
55+
MetaAnalyticsAccount = "analytics_account"
56+
MetaAnalyticsGa4Account = "analytics_ga4_account"
57+
MetaTags = "tags"
58+
MetaSource = "source"
59+
MetaDuration = "duration"
5960
)
6061

6162
const (
@@ -182,7 +183,7 @@ type docState struct {
182183
survey int // last used survey ID
183184
step *types.Step // current codelab step
184185
lastNode nodes.Node // last appended node
185-
env []string // current enviornment
186+
env []string // current environment
186187
cur *html.Node // current HTML node
187188
stack []*stackItem // cur and flags stack
188189
}
@@ -439,6 +440,9 @@ func addMetadataToCodelab(m map[string]string, c *types.Codelab, opts parser.Opt
439440
case MetaAnalyticsAccount:
440441
// Directly assign the GA id to the codelab field.
441442
c.GA = v
443+
case MetaAnalyticsGa4Account:
444+
// Directly assign the GA id to the codelab field.
445+
c.GA4 = v
442446
case MetaTags:
443447
// Standardize the tags and append to the codelab field.
444448
c.Tags = append(c.Tags, util.NormalizedSplit(v)...)

claat/parser/md/parse_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,7 @@ func TestParseMetadata(t *testing.T) {
171171
Tags: []string{"kiosk", "web"},
172172
Feedback: "https://www.google.com",
173173
GA: "12345",
174+
GA4: "54321",
174175
Extra: map[string]string{},
175176
}
176177

@@ -181,6 +182,7 @@ summary: abcdefghij
181182
categories: not, really
182183
environments: kiosk, web
183184
analytics_account: 12345
185+
analytics_ga4_account: 54321
184186
feedback_link: https://www.google.com
185187
186188
---
@@ -204,6 +206,7 @@ func TestParseMetadataPassMetadata(t *testing.T) {
204206
Tags: []string{"kiosk", "web"},
205207
Feedback: "https://www.google.com",
206208
GA: "12345",
209+
GA4: "54321",
207210
Extra: map[string]string{
208211
"extra_field_two": "bbbbb",
209212
},
@@ -216,6 +219,7 @@ summary: abcdefghij
216219
categories: not, really
217220
environments: kiosk, web
218221
analytics_account: 12345
222+
analytics_ga4_account: 54321
219223
feedback_link: https://www.google.com
220224
extra_field_one: aaaaa
221225
extra_field_two: bbbbb
@@ -278,6 +282,7 @@ summary: abcdefghij
278282
categories: not, really
279283
environments: kiosk, web
280284
analytics_account: 12345
285+
analytics_ga4_account: 54321
281286
feedback_link: https://www.google.com
282287
extrafieldone: aaaaa
283288
extrafieldtwo: bbbbb

claat/render/template.go

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,15 @@ import (
3535

3636
// Context is a template context during execution.
3737
type Context struct {
38-
Env string
39-
Prefix string
40-
GlobalGA string
41-
Format string
42-
Meta *types.Meta
43-
Steps []*types.Step
44-
Updated string
45-
Extra map[string]string // Extra variables passed from the command line.
38+
Env string
39+
Prefix string
40+
GlobalGA string
41+
GlobalGA4 string
42+
Format string
43+
Meta *types.Meta
44+
Steps []*types.Step
45+
Updated string
46+
Extra map[string]string // Extra variables passed from the command line.
4647
}
4748

4849
// Execute renders a template of the fmt format into w.
@@ -104,6 +105,7 @@ var funcMap = map[string]interface{}{
104105
res += kvLine(mdParse.MetaTags, strings.Join(meta.Tags, ","))
105106
res += kvLine(mdParse.MetaFeedbackLink, meta.Feedback)
106107
res += kvLine(mdParse.MetaAnalyticsAccount, meta.GA)
108+
res += kvLine(mdParse.MetaAnalyticsGa4Account, meta.GA4)
107109
res += kvLine(mdParse.MetaSource, meta.Source)
108110
res += kvLine(mdParse.MetaDuration, strconv.Itoa(meta.Duration))
109111

claat/render/template.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,9 @@
3434
</style>
3535
</head>
3636
<body>
37-
<google-codelab-analytics gaid="{{.GlobalGA}}"></google-codelab-analytics>
37+
<google-codelab-analytics gaid="{{.GlobalGA}}" ga4id="{{.GlobalGA4}}"></google-codelab-analytics>
3838
<google-codelab codelab-gaid="{{.Meta.GA}}"
39+
codelab-ga4id="{{.Meta.GA4}}"
3940
id="{{.Meta.ID}}"
4041
title="{{.Meta.Title}}"
4142
environment="{{index .Env}}"

claat/types/codelab.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ type Meta struct {
3535
Tags []string `json:"tags"` // All environments supported by the codelab
3636
Feedback string `json:"feedback,omitempty"` // Issues and bugs are sent here
3737
GA string `json:"ga,omitempty"` // Codelab-specific GA tracking ID
38+
GA4 string `json:"ga4,omitempty"` // Codelab-specific GA4 tracking ID
3839
Extra map[string]string `json:"extra,omitempty"` // Extra metadata specified in pass_metadata
3940

4041
URL string `json:"url"` // Legacy ID; TODO: remove

0 commit comments

Comments
 (0)