mirror of
https://github.com/foomo/sesamy-cli.git
synced 2025-10-16 12:35:36 +00:00
feat: add google tag
This commit is contained in:
parent
b4fb50d281
commit
61b0b337e7
@ -15,6 +15,7 @@ google:
|
||||
measurement_id: GTM-57BHX34G
|
||||
|
||||
credentials_file: ./tmp/google_service_account_creds.json
|
||||
server_container_url: http://sst.my-domain.com/
|
||||
|
||||
typescript:
|
||||
packages:
|
||||
|
||||
@ -50,6 +50,25 @@ var tagmanagerWebCmd = &cobra.Command{
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Info("- Variable:", logger.Args("name", "server-container-url"))
|
||||
serverContainerURL, err := c.UpsertConstantVariable("server-container-url", cfg.Google.ServerContainerURL)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Info("- Variable:", logger.Args("name", "Google Tag Settings"))
|
||||
googleTagSettings, err := c.UpsertGoogleTagSettingsVariable("Google Tag Settings", map[string]*tagmanager2.Variable{
|
||||
"server_container_url": serverContainerURL,
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
logger.Info("- Variable:", logger.Args("name", "server-container-url"))
|
||||
if _, err = c.UpsertGoogleTagWebTag("Google Tag", measurementID, googleTagSettings); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
for event, parameters := range eventParameters {
|
||||
logger.Info("- GA4 Event Trigger:", logger.Args("name", event))
|
||||
trigger, err := c.UpsertCustomEventTrigger(event)
|
||||
|
||||
@ -13,10 +13,11 @@ type Config struct {
|
||||
}
|
||||
|
||||
type Google struct {
|
||||
GA4 GA4 `yaml:"ga4"`
|
||||
GTM GTM `yaml:"gtm"`
|
||||
CredentialsFile string `yaml:"credentials_file"`
|
||||
CredentialsJSON string `yaml:"credentials_json"`
|
||||
GA4 GA4 `yaml:"ga4"`
|
||||
GTM GTM `yaml:"gtm"`
|
||||
CredentialsFile string `yaml:"credentials_file"`
|
||||
CredentialsJSON string `yaml:"credentials_json"`
|
||||
ServerContainerURL string `yaml:"server_container_url"`
|
||||
}
|
||||
|
||||
type GA4 struct {
|
||||
|
||||
@ -525,6 +525,51 @@ func (c *Client) UpsertGTEventSettingsVariable(name string, variables map[string
|
||||
return c.UpsertVariable(obj)
|
||||
}
|
||||
|
||||
func (c *Client) UpsertGoogleTagSettingsVariable(name string, variables map[string]*tagmanager.Variable) (*tagmanager.Variable, error) {
|
||||
parameters := make([]string, 0, len(variables))
|
||||
for k := range variables {
|
||||
parameters = append(parameters, k)
|
||||
}
|
||||
sort.Strings(parameters)
|
||||
|
||||
list := make([]*tagmanager.Parameter, len(parameters))
|
||||
for i, parameter := range parameters {
|
||||
list[i] = &tagmanager.Parameter{
|
||||
Type: "map",
|
||||
Map: []*tagmanager.Parameter{
|
||||
{
|
||||
Key: "parameter",
|
||||
Type: "template",
|
||||
Value: parameter,
|
||||
},
|
||||
{
|
||||
Key: "parameterValue",
|
||||
Type: "template",
|
||||
Value: "{{" + variables[parameter].Name + "}}",
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
obj := &tagmanager.Variable{
|
||||
AccountId: c.accountID,
|
||||
ContainerId: c.containerID,
|
||||
WorkspaceId: c.workspaceID,
|
||||
Name: name,
|
||||
Notes: c.notes,
|
||||
Parameter: []*tagmanager.Parameter{
|
||||
{
|
||||
Key: "configSettingsTable",
|
||||
Type: "list",
|
||||
List: list,
|
||||
},
|
||||
},
|
||||
Type: "gtes",
|
||||
}
|
||||
|
||||
return c.UpsertVariable(obj)
|
||||
}
|
||||
|
||||
func (c *Client) UpsertCustomEventTrigger(name string) (*tagmanager.Trigger, error) {
|
||||
fullname := "Event." + name
|
||||
cache, err := c.Trigger(fullname)
|
||||
@ -721,6 +766,52 @@ func (c *Client) UpsertGA4WebTag(name string, eventSettings *tagmanager.Variable
|
||||
return c.Tag(fullname)
|
||||
}
|
||||
|
||||
func (c *Client) UpsertGoogleTagWebTag(name string, measurementID *tagmanager.Variable, configSettings *tagmanager.Variable) (*tagmanager.Tag, error) {
|
||||
cache, err := c.Tag(name)
|
||||
if err != nil && !errors.Is(err, ErrNotFound) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
folder, err := c.Folder(c.folderName)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
obj := &tagmanager.Tag{
|
||||
AccountId: c.accountID,
|
||||
ContainerId: c.containerID,
|
||||
WorkspaceId: c.workspaceID,
|
||||
FiringTriggerId: []string{"2147479573"},
|
||||
ParentFolderId: folder.FolderId,
|
||||
Name: name,
|
||||
Notes: c.notes,
|
||||
Parameter: []*tagmanager.Parameter{
|
||||
{
|
||||
Key: "tagId",
|
||||
Type: "template",
|
||||
Value: "{{" + measurementID.Name + "}}",
|
||||
},
|
||||
{
|
||||
Key: "configSettingsVariable",
|
||||
Type: "template",
|
||||
Value: "{{" + configSettings.Name + "}}",
|
||||
},
|
||||
},
|
||||
Type: "googtag",
|
||||
}
|
||||
|
||||
if cache == nil {
|
||||
c.tags[name], err = c.Service().Accounts.Containers.Workspaces.Tags.Create(c.WorkspacePath(), obj).Do()
|
||||
} else {
|
||||
c.tags[name], err = c.Service().Accounts.Containers.Workspaces.Tags.Update(c.WorkspacePath()+"/tags/"+cache.TagId, obj).Do()
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return c.Tag(name)
|
||||
}
|
||||
|
||||
func (c *Client) UpsertGA4ServerTag(name string, measurementID *tagmanager.Variable, trigger *tagmanager.Trigger) (*tagmanager.Tag, error) {
|
||||
cache, err := c.Tag(name)
|
||||
if err != nil && !errors.Is(err, ErrNotFound) {
|
||||
|
||||
@ -85,6 +85,7 @@ func TestNewClient_Server(t *testing.T) {
|
||||
|
||||
func TestNewClient_Web(t *testing.T) {
|
||||
t.Skip()
|
||||
|
||||
c, err := tagmanager.NewClient(
|
||||
context.TODO(),
|
||||
os.Getenv("TEST_ACCOUNT_ID"),
|
||||
|
||||
Loading…
Reference in New Issue
Block a user