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
|
measurement_id: GTM-57BHX34G
|
||||||
|
|
||||||
credentials_file: ./tmp/google_service_account_creds.json
|
credentials_file: ./tmp/google_service_account_creds.json
|
||||||
|
server_container_url: http://sst.my-domain.com/
|
||||||
|
|
||||||
typescript:
|
typescript:
|
||||||
packages:
|
packages:
|
||||||
|
|||||||
@ -50,6 +50,25 @@ var tagmanagerWebCmd = &cobra.Command{
|
|||||||
return err
|
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 {
|
for event, parameters := range eventParameters {
|
||||||
logger.Info("- GA4 Event Trigger:", logger.Args("name", event))
|
logger.Info("- GA4 Event Trigger:", logger.Args("name", event))
|
||||||
trigger, err := c.UpsertCustomEventTrigger(event)
|
trigger, err := c.UpsertCustomEventTrigger(event)
|
||||||
|
|||||||
@ -13,10 +13,11 @@ type Config struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type Google struct {
|
type Google struct {
|
||||||
GA4 GA4 `yaml:"ga4"`
|
GA4 GA4 `yaml:"ga4"`
|
||||||
GTM GTM `yaml:"gtm"`
|
GTM GTM `yaml:"gtm"`
|
||||||
CredentialsFile string `yaml:"credentials_file"`
|
CredentialsFile string `yaml:"credentials_file"`
|
||||||
CredentialsJSON string `yaml:"credentials_json"`
|
CredentialsJSON string `yaml:"credentials_json"`
|
||||||
|
ServerContainerURL string `yaml:"server_container_url"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GA4 struct {
|
type GA4 struct {
|
||||||
|
|||||||
@ -525,6 +525,51 @@ func (c *Client) UpsertGTEventSettingsVariable(name string, variables map[string
|
|||||||
return c.UpsertVariable(obj)
|
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) {
|
func (c *Client) UpsertCustomEventTrigger(name string) (*tagmanager.Trigger, error) {
|
||||||
fullname := "Event." + name
|
fullname := "Event." + name
|
||||||
cache, err := c.Trigger(fullname)
|
cache, err := c.Trigger(fullname)
|
||||||
@ -721,6 +766,52 @@ func (c *Client) UpsertGA4WebTag(name string, eventSettings *tagmanager.Variable
|
|||||||
return c.Tag(fullname)
|
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) {
|
func (c *Client) UpsertGA4ServerTag(name string, measurementID *tagmanager.Variable, trigger *tagmanager.Trigger) (*tagmanager.Tag, error) {
|
||||||
cache, err := c.Tag(name)
|
cache, err := c.Tag(name)
|
||||||
if err != nil && !errors.Is(err, ErrNotFound) {
|
if err != nil && !errors.Is(err, ErrNotFound) {
|
||||||
|
|||||||
@ -85,6 +85,7 @@ func TestNewClient_Server(t *testing.T) {
|
|||||||
|
|
||||||
func TestNewClient_Web(t *testing.T) {
|
func TestNewClient_Web(t *testing.T) {
|
||||||
t.Skip()
|
t.Skip()
|
||||||
|
|
||||||
c, err := tagmanager.NewClient(
|
c, err := tagmanager.NewClient(
|
||||||
context.TODO(),
|
context.TODO(),
|
||||||
os.Getenv("TEST_ACCOUNT_ID"),
|
os.Getenv("TEST_ACCOUNT_ID"),
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user