googleads

package module
v0.0.0-...-bb6e3c3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 11, 2026 License: MIT Imports: 18 Imported by: 0

README

Google Ads Go SDK

A clean, idiomatic Go client for the Google Ads API.

Features

  • Service-Oriented: Organized by Google Ads resources (Campaigns, Budgets, etc.).
  • gRPC Under the Hood: High-performance communication using the latest Google Ads protobuf definitions.

Installation

go get github.com/orixa-group/googleads

Configuration

The client requires a Config struct with your Google Ads API credentials:

config := googleads.Config{
    ClientID:        "YOUR_CLIENT_ID",
    ClientSecret:    "YOUR_CLIENT_SECRET",
    RefreshToken:    "YOUR_REFRESH_TOKEN",
    DeveloperToken:  "YOUR_DEVELOPER_TOKEN",
    LoginCustomerID: "YOUR_LOGIN_CUSTOMER_ID", // Optional
}

Usage

Connecting to the API
ctx := context.Background()
err := googleads.Connect(ctx, config)
if err != nil {
    log.Fatal(err)
}
defer googleads.Close()
Working with Campaigns
Listing Campaigns
campaigns, err := googleads.Campaigns().List(ctx, "CUSTOMER_ID")
if err != nil {
    log.Fatal(err)
}

for _, c := range campaigns {
    fmt.Printf("Campaign: %s (ID: %s)\n", c.GetName(), c.GetId())
}
Creating a Campaign

First, create a campaign budget, then use its resource name to create the campaign.

// 1. Create a Campaign Budget
campaign := googleads.NewCampaign()
campaign.SetName("Summer Sale 2024")
campaign.SetBudget(1000) // Amount in cents

budget, err := googleads.CampaignBudgets().Create(ctx, "CUSTOMER_ID", campaign.Budget)
if err != nil {
    log.Fatal(err)
}

// 2. Create the Campaign using the budget's resource name
campaign.SetEnabled(true)
campaign.CampaignBudget = googleads.String(budget.GetResourceName())

createdCampaign, err := googleads.Campaigns().Create(ctx, "CUSTOMER_ID", campaign)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Created campaign with ID: %s\n", createdCampaign.GetId())
Working with Campaign Budgets
Fetching a Budget
budget, err := googleads.CampaignBudgets().Fetch(ctx, "CUSTOMER_ID", googleads.CampaignBudgetById("456"))
if err != nil {
    log.Fatal(err)
}
fmt.Printf("Budget Amount: %d cents\n", budget.GetAmountCents())

License

This project is licensed under the MIT License - see the LICENSE file for details.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ErrResourceNotFound = errors.New("resource not found")

Functions

func AdServingOptimize

func AdServingOptimize(campaign *resources.Campaign)

func AdServingRotateIndefinitely

func AdServingRotateIndefinitely(campaign *resources.Campaign)

func AdvertisingChannelDemandGen

func AdvertisingChannelDemandGen(campaign *resources.Campaign)

func AdvertisingChannelDisplay

func AdvertisingChannelDisplay(campaign *resources.Campaign)

func AdvertisingChannelPerformanceMax

func AdvertisingChannelPerformanceMax(campaign *resources.Campaign)

func AdvertisingChannelSearch

func AdvertisingChannelSearch(campaign *resources.Campaign)

func AdvertisingChannelShopping

func AdvertisingChannelShopping(campaign *resources.Campaign)

func AdvertisingChannelVideo

func AdvertisingChannelVideo(campaign *resources.Campaign)

func Bool

func Bool(b bool) *bool

func CampaignKeywordMatchBroad

func CampaignKeywordMatchBroad(campaign *resources.Campaign)

func Close

func Close() error

func Connect

func Connect(ctx context.Context, config Config) error

Connect creates a new Google Ads API client.

func CreateCampaign

func CreateCampaign(ctx context.Context, customer *Customer, campaign *Campaign) error

func CreateCustomer

func CreateCustomer(ctx context.Context, customer, parent *Customer) error

func DecodeAdsServiceError

func DecodeAdsServiceError(err error) error

func DeviceConnectedTV

func DeviceConnectedTV(device *common.DeviceInfo)

func DeviceDesktop

func DeviceDesktop(device *common.DeviceInfo)

func DeviceMobile

func DeviceMobile(device *common.DeviceInfo)

func DeviceTablet

func DeviceTablet(device *common.DeviceInfo)

func Fetch

func Fetch[R any](ctx context.Context, service services.GoogleAdsServiceClient, customerId, query string, createInstance func(*services.GoogleAdsRow) *R) (*R, error)

func Flatten

func Flatten[I any](slice [][]I) []I

func Float64

func Float64(f float64) *float64

func GeoTargetNegativePresence

func GeoTargetNegativePresence(setting *resources.Campaign_GeoTargetTypeSetting)

func GeoTargetNegativePresenceOrInterest

func GeoTargetNegativePresenceOrInterest(setting *resources.Campaign_GeoTargetTypeSetting)

func GeoTargetPositivePresence

func GeoTargetPositivePresence(setting *resources.Campaign_GeoTargetTypeSetting)

func GeoTargetPositivePresenceOrInterest

func GeoTargetPositivePresenceOrInterest(setting *resources.Campaign_GeoTargetTypeSetting)

func Int32

func Int32(i int32) *int32

func Int64

func Int64(i int64) *int64

func List

func List[R any](ctx context.Context, service services.GoogleAdsServiceClient, customerId, query string, createInstance func(*services.GoogleAdsRow) *R) ([]*R, error)

func Map

func Map[I, O any](slice []I, fn func(item I) O) []O

func String

func String(s string) *string

Types

type AccountBudget

type AccountBudget struct {
	*resources.AccountBudgetProposal
}

func CreateAccountBudget

func CreateAccountBudget(ctx context.Context, customer *Customer, bs *BillingSetup) (*AccountBudget, error)

func FetchAccountBudget

func FetchAccountBudget(ctx context.Context, customer *Customer, filters ...AccountBudgetFilter) (*AccountBudget, error)

func ListAccountBudgets

func ListAccountBudgets(ctx context.Context, customer *Customer, filters ...AccountBudgetFilter) ([]*AccountBudget, error)

func (*AccountBudget) GetId

func (ab *AccountBudget) GetId() string

func (*AccountBudget) SetId

func (ab *AccountBudget) SetId(id string)

type AccountBudgetFilter

type AccountBudgetFilter func() string

func AccountBudgetByCustomer

func AccountBudgetByCustomer(id string) AccountBudgetFilter

func AccountBudgetById

func AccountBudgetById(id string) AccountBudgetFilter

func AccountBudgetByResourceName

func AccountBudgetByResourceName(resourceName string) AccountBudgetFilter

type AccountBudgetQueryBuilder

type AccountBudgetQueryBuilder struct {
	*QueryBuilder[AccountBudgetFilter]
}

func NewAccountBudgetQueryBuilder

func NewAccountBudgetQueryBuilder() *AccountBudgetQueryBuilder

func (*AccountBudgetQueryBuilder) Where

type AdGroup

type AdGroup struct {
	*resources.AdGroup
	Campaign *Campaign
	Criteria AdGroupCriteria
	Assets   AdGroupAssets
	Ads      AdGroupAds
	// contains filtered or unexported fields
}

func FetchAdGroup

func FetchAdGroup(ctx context.Context, customerId string, filters ...AdGroupFilter) (*AdGroup, error)

func ListAdGroups

func ListAdGroups(ctx context.Context, customerId string, filters ...AdGroupFilter) ([]*AdGroup, error)

func (*AdGroup) Create

func (ag *AdGroup) Create(ctx context.Context) error

func (AdGroup) GetEnabled

func (ag AdGroup) GetEnabled() bool

func (AdGroup) GetId

func (ag AdGroup) GetId() string

func (*AdGroup) ListAds

func (ag *AdGroup) ListAds(ctx context.Context) (AdGroupAds, error)

func (*AdGroup) ListAssets

func (ag *AdGroup) ListAssets(ctx context.Context) (AdGroupAssets, error)

func (*AdGroup) ListCriteria

func (ag *AdGroup) ListCriteria(ctx context.Context) (AdGroupCriteria, error)

func (*AdGroup) Save

func (ag *AdGroup) Save(ctx context.Context) error

func (*AdGroup) SetEnabled

func (ag *AdGroup) SetEnabled(enabled bool)

func (*AdGroup) SetId

func (ag *AdGroup) SetId(id string)

func (*AdGroup) SetName

func (ag *AdGroup) SetName(name string)

func (*AdGroup) Update

func (ag *AdGroup) Update(ctx context.Context) error

type AdGroupAd

type AdGroupAd struct {
	*resources.AdGroupAd
}

func FetchAdGroupAd

func FetchAdGroupAd(ctx context.Context, customerId string, filters ...AdGroupAdFilter) (*AdGroupAd, error)

func ListAdGroupAds

func ListAdGroupAds(ctx context.Context, customerId string, filters ...AdGroupAdFilter) ([]*AdGroupAd, error)

type AdGroupAdFilter

type AdGroupAdFilter func() string

func AdGroupAdByAdGroup

func AdGroupAdByAdGroup(resourceName string) AdGroupAdFilter

func AdGroupAdByResourceName

func AdGroupAdByResourceName(resourceName string) AdGroupAdFilter

type AdGroupAdQueryBuilder

type AdGroupAdQueryBuilder struct {
	*QueryBuilder[AdGroupAdFilter]
}

func NewAdGroupAdQueryBuilder

func NewAdGroupAdQueryBuilder() *AdGroupAdQueryBuilder

func (*AdGroupAdQueryBuilder) Where

type AdGroupAds

type AdGroupAds []*AdGroupAd

func (*AdGroupAds) Add

func (agas *AdGroupAds) Add(ad *resources.Ad, options ...AdOption)

func (*AdGroupAds) AddResponsiveSearchAd

func (agas *AdGroupAds) AddResponsiveSearchAd(headlines []string, descriptions []string, finalUrls ...string)

type AdGroupAsset

type AdGroupAsset struct {
	*resources.AdGroupAsset
	Asset *Asset
}

func FetchAdGroupAsset

func FetchAdGroupAsset(ctx context.Context, customerId string, filters ...AdGroupAssetFilter) (*AdGroupAsset, error)

func ListAdGroupAssets

func ListAdGroupAssets(ctx context.Context, customerId string, filters ...AdGroupAssetFilter) ([]*AdGroupAsset, error)

type AdGroupAssetFilter

type AdGroupAssetFilter Filter

func AdGroupAssetByAdGroup

func AdGroupAssetByAdGroup(resourceName string) AdGroupAssetFilter

func AdGroupAssetByAsset

func AdGroupAssetByAsset(resourceName string) AdGroupAssetFilter

func AdGroupAssetByResourceName

func AdGroupAssetByResourceName(resourceName string) AdGroupAssetFilter

type AdGroupAssetQueryBuilder

type AdGroupAssetQueryBuilder struct {
	*QueryBuilder[AdGroupAssetFilter]
}

func NewAdGroupAssetQueryBuilder

func NewAdGroupAssetQueryBuilder() *AdGroupAssetQueryBuilder

func (*AdGroupAssetQueryBuilder) Where

type AdGroupAssets

type AdGroupAssets []*AdGroupAsset

func (*AdGroupAssets) Add

func (agas *AdGroupAssets) Add(asset *AdGroupAsset, options ...AssetOption)

func (*AdGroupAssets) AddCall

func (agas *AdGroupAssets) AddCall(countryCode, phoneNumber string)

func (*AdGroupAssets) AddCallout

func (agas *AdGroupAssets) AddCallout(text string)

func (*AdGroupAssets) AddImage

func (agas *AdGroupAssets) AddImage(source AssetImageSource) error
func (agas *AdGroupAssets) AddSitelink(text, description1, description2 string, finalUrls ...string)

type AdGroupCriteria

type AdGroupCriteria []*AdGroupCriterion

func (*AdGroupCriteria) Add

func (agcs *AdGroupCriteria) Add(criterion *AdGroupCriterion, options ...AdGroupCriterionOption)

func (*AdGroupCriteria) AddKeyword

func (agcs *AdGroupCriteria) AddKeyword(keyword string, matchType KeywordMatchType)

type AdGroupCriterion

type AdGroupCriterion struct {
	*resources.AdGroupCriterion
}

func FetchAdGroupCriterion

func FetchAdGroupCriterion(ctx context.Context, customerId string, filters ...AdGroupCriterionFilter) (*AdGroupCriterion, error)

func ListAdGroupCriteria

func ListAdGroupCriteria(ctx context.Context, customerId string, filters ...AdGroupCriterionFilter) ([]*AdGroupCriterion, error)

type AdGroupCriterionFilter

type AdGroupCriterionFilter func() string

func AdGroupCriterionByAdGroup

func AdGroupCriterionByAdGroup(resourceName string) AdGroupCriterionFilter

func AdGroupCriterionByResourceName

func AdGroupCriterionByResourceName(resourceName string) AdGroupCriterionFilter

type AdGroupCriterionOption

type AdGroupCriterionOption func(*resources.AdGroupCriterion)

func ReplaceWordInKeyword

func ReplaceWordInKeyword(old, new string) AdGroupCriterionOption

type AdGroupCriterionQueryBuilder

type AdGroupCriterionQueryBuilder struct {
	*QueryBuilder[AdGroupCriterionFilter]
}

func NewAdGroupCriterionQueryBuilder

func NewAdGroupCriterionQueryBuilder() *AdGroupCriterionQueryBuilder

func (*AdGroupCriterionQueryBuilder) Where

type AdGroupFilter

type AdGroupFilter Filter

func AdGroupById

func AdGroupById(id string) AdGroupFilter

func AdGroupByResourceName

func AdGroupByResourceName(resourceName string) AdGroupFilter

func AdGroupsByCampaign

func AdGroupsByCampaign(resourceName string) AdGroupFilter

type AdGroupQueryBuilder

type AdGroupQueryBuilder struct {
	*QueryBuilder[AdGroupFilter]
}

func NewAdGroupQueryBuilder

func NewAdGroupQueryBuilder() *AdGroupQueryBuilder

func (*AdGroupQueryBuilder) Where

type AdGroups

type AdGroups []*AdGroup

type AdOption

type AdOption func(*resources.Ad)

func ReplaceURLInAd

func ReplaceURLInAd(url string) AdOption

func ReplaceWordInAd

func ReplaceWordInAd(old, new string) AdOption

type AdQueryBuilder

type AdQueryBuilder struct {
	*QueryBuilder[Filter]
}

func NewAdQueryBuilder

func NewAdQueryBuilder() *AdQueryBuilder

type AdServingOptimizationStatus

type AdServingOptimizationStatus func(campaign *resources.Campaign)

type AdsServiceError

type AdsServiceError struct {
	Message   string
	FieldPath []string
}

func (AdsServiceError) Error

func (ase AdsServiceError) Error() string

type AdsServiceErrors

type AdsServiceErrors []*AdsServiceError

func (AdsServiceErrors) Error

func (ases AdsServiceErrors) Error() string

type AdvertisingChannel

type AdvertisingChannel func(campaign *resources.Campaign)

type Asset

type Asset struct {
	*resources.Asset
}

func FetchAsset

func FetchAsset(ctx context.Context, customerId string, filters ...AssetFilter) (*Asset, error)

func ListAssets

func ListAssets(ctx context.Context, customerId string, filters ...AssetFilter) ([]*Asset, error)

func (Asset) GetId

func (a Asset) GetId() string

func (*Asset) SetId

func (a *Asset) SetId(id string)

type AssetFilter

type AssetFilter Filter

func AssetById

func AssetById(id string) AssetFilter

func AssetByResourceName

func AssetByResourceName(resourceName string) AssetFilter

type AssetGroup

type AssetGroup struct {
	*resources.AssetGroup
	Campaign *Campaign
	Assets   AssetGroupAssets
	// contains filtered or unexported fields
}

func FetchAssetGroup

func FetchAssetGroup(ctx context.Context, customerId string, filters ...AssetGroupFilter) (*AssetGroup, error)

func ListAssetGroups

func ListAssetGroups(ctx context.Context, customerId string, filters ...AssetGroupFilter) ([]*AssetGroup, error)

func (*AssetGroup) Create

func (ag *AssetGroup) Create(ctx context.Context) error

func (AssetGroup) GetEnabled

func (ag AssetGroup) GetEnabled() bool

func (AssetGroup) GetId

func (ag AssetGroup) GetId() string

func (*AssetGroup) ListAssets

func (ag *AssetGroup) ListAssets(ctx context.Context) (AssetGroupAssets, error)

func (*AssetGroup) Save

func (ag *AssetGroup) Save(ctx context.Context) error

func (*AssetGroup) SetEnabled

func (ag *AssetGroup) SetEnabled(enabled bool)

func (*AssetGroup) SetFinalUrls

func (ag *AssetGroup) SetFinalUrls(urls []string)

func (*AssetGroup) SetId

func (ag *AssetGroup) SetId(id string)

func (*AssetGroup) SetName

func (ag *AssetGroup) SetName(name string)

func (*AssetGroup) Update

func (ag *AssetGroup) Update(ctx context.Context) error

type AssetGroupAsset

type AssetGroupAsset struct {
	*resources.AssetGroupAsset
	Asset *Asset
}

func FetchAssetGroupAsset

func FetchAssetGroupAsset(ctx context.Context, customerId string, filters ...AssetGroupAssetFilter) (*AssetGroupAsset, error)

func ListAssetGroupAssets

func ListAssetGroupAssets(ctx context.Context, customerId string, filters ...AssetGroupAssetFilter) ([]*AssetGroupAsset, error)

type AssetGroupAssetFilter

type AssetGroupAssetFilter Filter

func AssetGroupAssetByAsset

func AssetGroupAssetByAsset(resourceName string) AssetGroupAssetFilter

func AssetGroupAssetByAssetGroup

func AssetGroupAssetByAssetGroup(resourceName string) AssetGroupAssetFilter

func AssetGroupAssetByResourceName

func AssetGroupAssetByResourceName(resourceName string) AssetGroupAssetFilter

type AssetGroupAssetQueryBuilder

type AssetGroupAssetQueryBuilder struct {
	*QueryBuilder[AssetGroupAssetFilter]
}

func NewAssetGroupAssetQueryBuilder

func NewAssetGroupAssetQueryBuilder() *AssetGroupAssetQueryBuilder

func (*AssetGroupAssetQueryBuilder) Where

type AssetGroupAssets

type AssetGroupAssets []*AssetGroupAsset

func (*AssetGroupAssets) Add

func (aga *AssetGroupAssets) Add(asset *AssetGroupAsset, options ...AssetOption)

func (*AssetGroupAssets) AddBusinessName

func (aga *AssetGroupAssets) AddBusinessName(text string)

func (*AssetGroupAssets) AddDescription

func (aga *AssetGroupAssets) AddDescription(text string)

func (*AssetGroupAssets) AddHeadline

func (aga *AssetGroupAssets) AddHeadline(text string)
func (aga *AssetGroupAssets) AddLogo(source AssetImageSource) error

func (*AssetGroupAssets) AddLongHeadline

func (aga *AssetGroupAssets) AddLongHeadline(text string)

func (*AssetGroupAssets) AddMarketingImage

func (aga *AssetGroupAssets) AddMarketingImage(source AssetImageSource) error

func (*AssetGroupAssets) AddSquareMarketingImage

func (aga *AssetGroupAssets) AddSquareMarketingImage(source AssetImageSource) error

type AssetGroupFilter

type AssetGroupFilter Filter

func AssetGroupByCampaign

func AssetGroupByCampaign(resourceName string) AssetGroupFilter

func AssetGroupById

func AssetGroupById(id string) AssetGroupFilter

func AssetGroupByResourceName

func AssetGroupByResourceName(resourceName string) AssetGroupFilter

type AssetGroupQueryBuilder

type AssetGroupQueryBuilder struct {
	*QueryBuilder[AssetGroupFilter]
}

func NewAssetGroupQueryBuilder

func NewAssetGroupQueryBuilder() *AssetGroupQueryBuilder

func (*AssetGroupQueryBuilder) Where

type AssetGroups

type AssetGroups []*AssetGroup

type AssetImageSource

type AssetImageSource func(asset *common.ImageAsset) error

func AssetImageFromBytes

func AssetImageFromBytes(data []byte) AssetImageSource

func AssetImageFromUrl

func AssetImageFromUrl(url string) AssetImageSource

type AssetOption

type AssetOption func(*resources.Asset)

func ChangeAssetPhoneNumber

func ChangeAssetPhoneNumber(number string) AssetOption

func ChangeAssetURL

func ChangeAssetURL(url string) AssetOption

func ReplaceWordInTextAsset

func ReplaceWordInTextAsset(old, new string) AssetOption

type AssetQueryBuilder

type AssetQueryBuilder struct {
	*QueryBuilder[AssetFilter]
}

func NewAssetQueryBuilder

func NewAssetQueryBuilder() *AssetQueryBuilder

func (*AssetQueryBuilder) Where

func (b *AssetQueryBuilder) Where(clauses ...AssetFilter) *AssetQueryBuilder

type BillingSetup

type BillingSetup struct {
	*resources.BillingSetup
}

func CreateBillingSetup

func CreateBillingSetup(ctx context.Context, customer *Customer, paymentsAccountId string) (*BillingSetup, error)

func FetchBillingSetup

func FetchBillingSetup(ctx context.Context, customer *Customer, filters ...BillingSetupFilter) (*BillingSetup, error)

func ListBillingSetups

func ListBillingSetups(ctx context.Context, customer *Customer, filters ...BillingSetupFilter) ([]*BillingSetup, error)

func (*BillingSetup) GetId

func (bs *BillingSetup) GetId() string

func (*BillingSetup) SetId

func (bs *BillingSetup) SetId(id string)

type BillingSetupFilter

type BillingSetupFilter func() string

func BillingSetupByCustomer

func BillingSetupByCustomer(id string) BillingSetupFilter

func BillingSetupById

func BillingSetupById(id string) BillingSetupFilter

func BillingSetupByResourceName

func BillingSetupByResourceName(resourceName string) BillingSetupFilter

type BillingSetupQueryBuilder

type BillingSetupQueryBuilder struct {
	*QueryBuilder[BillingSetupFilter]
}

func NewBillingSetupQueryBuilder

func NewBillingSetupQueryBuilder() *BillingSetupQueryBuilder

func (*BillingSetupQueryBuilder) Where

type Campaign

type Campaign struct {
	*resources.Campaign
	Budget      *CampaignBudget
	Customer    *Customer
	Criteria    CampaignCriteria
	Assets      CampaignAssets
	AdGroups    AdGroups
	AssetGroups AssetGroups
	// contains filtered or unexported fields
}

func FetchCampaign

func FetchCampaign(ctx context.Context, customerId string, filters ...CampaignFilter) (*Campaign, error)

func NewEmptyCampaign

func NewEmptyCampaign() *Campaign

func NewPerformanceMaxCampaign

func NewPerformanceMaxCampaign(name string, enabled bool, budget int, enableBrandGuidelines bool) *Campaign

func NewSearchCampaign

func NewSearchCampaign(name string, enabled bool, budget int) *Campaign

func (*Campaign) Create

func (c *Campaign) Create(ctx context.Context, customer *Customer) error

func (Campaign) GetBudget

func (c Campaign) GetBudget() int

func (Campaign) GetChannelType

func (c Campaign) GetChannelType() ChannelType

func (Campaign) GetEnabled

func (c Campaign) GetEnabled() bool

func (Campaign) GetEndDate

func (c Campaign) GetEndDate() string

func (Campaign) GetGeoTargetType

func (c Campaign) GetGeoTargetType() GeoTargetType

func (Campaign) GetId

func (c Campaign) GetId() string

func (Campaign) GetObjective

func (c Campaign) GetObjective() Objective

func (Campaign) GetStartDate

func (c Campaign) GetStartDate() string

func (*Campaign) IsPMax

func (c *Campaign) IsPMax() bool

func (*Campaign) IsSearch

func (c *Campaign) IsSearch() bool

func (*Campaign) ListAdGroups

func (c *Campaign) ListAdGroups(ctx context.Context) (AdGroups, error)

func (*Campaign) ListAssetGroups

func (c *Campaign) ListAssetGroups(ctx context.Context) (AssetGroups, error)

func (*Campaign) ListAssets

func (c *Campaign) ListAssets(ctx context.Context) (CampaignAssets, error)

func (*Campaign) ListCriteria

func (c *Campaign) ListCriteria(ctx context.Context) (CampaignCriteria, error)

func (*Campaign) NewAdGroup

func (c *Campaign) NewAdGroup(name string) *AdGroup

func (*Campaign) NewAssetGroup

func (c *Campaign) NewAssetGroup(name string) *AssetGroup

func (*Campaign) Save

func (c *Campaign) Save(ctx context.Context) error

func (*Campaign) SetBudget

func (c *Campaign) SetBudget(budget int)

func (*Campaign) SetChannelType

func (c *Campaign) SetChannelType(channel ChannelType)

func (*Campaign) SetEnabled

func (c *Campaign) SetEnabled(enabled bool)

func (*Campaign) SetEndDate

func (c *Campaign) SetEndDate(date string)

func (*Campaign) SetGeoTargetType

func (c *Campaign) SetGeoTargetType(geoTargetType GeoTargetType)

func (*Campaign) SetId

func (c *Campaign) SetId(id string)

func (*Campaign) SetName

func (c *Campaign) SetName(name string)

func (*Campaign) SetObjective

func (c *Campaign) SetObjective(objective Objective)

func (*Campaign) SetStartDate

func (c *Campaign) SetStartDate(date string)

func (*Campaign) Update

func (c *Campaign) Update(ctx context.Context) error

type CampaignAsset

type CampaignAsset struct {
	*resources.CampaignAsset
	Asset *Asset
}

func FetchCampaignAsset

func FetchCampaignAsset(ctx context.Context, customerId string, filters ...CampaignAssetFilter) (*CampaignAsset, error)

type CampaignAssetFilter

type CampaignAssetFilter Filter

func CampaignAssetByAsset

func CampaignAssetByAsset(resourceName string) CampaignAssetFilter

func CampaignAssetByCampaign

func CampaignAssetByCampaign(resourceName string) CampaignAssetFilter

func CampaignAssetByResourceName

func CampaignAssetByResourceName(resourceName string) CampaignAssetFilter

type CampaignAssetQueryBuilder

type CampaignAssetQueryBuilder struct {
	*QueryBuilder[CampaignAssetFilter]
}

func NewCampaignAssetQueryBuilder

func NewCampaignAssetQueryBuilder() *CampaignAssetQueryBuilder

func (*CampaignAssetQueryBuilder) Where

type CampaignAssets

type CampaignAssets []*CampaignAsset

func ListCampaignAssets

func ListCampaignAssets(ctx context.Context, customerId string, filters ...CampaignAssetFilter) (CampaignAssets, error)

func (*CampaignAssets) Add

func (c *CampaignAssets) Add(asset *CampaignAsset, options ...AssetOption)

func (*CampaignAssets) AddCall

func (c *CampaignAssets) AddCall(countryCode, phoneNumber string)

func (*CampaignAssets) AddCallout

func (c *CampaignAssets) AddCallout(text string)

func (*CampaignAssets) AddImage

func (c *CampaignAssets) AddImage(source AssetImageSource) error
func (c *CampaignAssets) AddSitelink(text, description1, description2 string, finalUrls ...string)

type CampaignBudget

type CampaignBudget struct {
	*resources.CampaignBudget
	// contains filtered or unexported fields
}

func FetchCampaignBudget

func FetchCampaignBudget(ctx context.Context, customerId string, filters ...CampaignBudgetFilter) (*CampaignBudget, error)

func ListCampaignBudgets

func ListCampaignBudgets(ctx context.Context, customerId string, filters ...CampaignBudgetFilter) ([]*CampaignBudget, error)

func (CampaignBudget) GetAmountCents

func (c CampaignBudget) GetAmountCents() int

func (CampaignBudget) GetId

func (c CampaignBudget) GetId() string

func (*CampaignBudget) SetAmountCents

func (c *CampaignBudget) SetAmountCents(amount int)

func (*CampaignBudget) SetId

func (c *CampaignBudget) SetId(id string)

func (*CampaignBudget) SetName

func (c *CampaignBudget) SetName(name string)

type CampaignBudgetFilter

type CampaignBudgetFilter Filter

func CampaignBudgetByCustomer

func CampaignBudgetByCustomer(id string) CampaignBudgetFilter

func CampaignBudgetById

func CampaignBudgetById(id string) CampaignBudgetFilter

func CampaignBudgetByResourceName

func CampaignBudgetByResourceName(resourceName string) CampaignBudgetFilter

type CampaignBudgetQueryBuilder

type CampaignBudgetQueryBuilder struct {
	*QueryBuilder[CampaignBudgetFilter]
}

func NewCampaignBudgetQueryBuilder

func NewCampaignBudgetQueryBuilder() *CampaignBudgetQueryBuilder

func (*CampaignBudgetQueryBuilder) Where

type CampaignCriteria

type CampaignCriteria []*CampaignCriterion

func (*CampaignCriteria) Add

func (c *CampaignCriteria) Add(criterion *CampaignCriterion, options ...CampaignCriterionOption)

func (*CampaignCriteria) AddLanguageById

func (c *CampaignCriteria) AddLanguageById(languageId string)

func (*CampaignCriteria) AddLocationById

func (c *CampaignCriteria) AddLocationById(locationId string)

func (*CampaignCriteria) AddProximityByAddress

func (c *CampaignCriteria) AddProximityByAddress(address string, radius float64)

func (*CampaignCriteria) AddProximityByCoordinates

func (c *CampaignCriteria) AddProximityByCoordinates(latitude, longitude float64, radius float64)

type CampaignCriterion

type CampaignCriterion struct {
	*resources.CampaignCriterion
}

func FetchCampaignCriterion

func FetchCampaignCriterion(ctx context.Context, customerId string, filters ...CampaignCriterionFilter) (*CampaignCriterion, error)

func ListCampaignCriteria

func ListCampaignCriteria(ctx context.Context, customerId string, filters ...CampaignCriterionFilter) ([]*CampaignCriterion, error)

type CampaignCriterionFilter

type CampaignCriterionFilter Filter

func CampaignCriterionByCampaign

func CampaignCriterionByCampaign(resourceName string) CampaignCriterionFilter

func CampaignCriterionByResourceName

func CampaignCriterionByResourceName(resourceName string) CampaignCriterionFilter

type CampaignCriterionOption

type CampaignCriterionOption func(*resources.CampaignCriterion)

func ChangeCampaignCriterionProximityRadius

func ChangeCampaignCriterionProximityRadius(address string, km float64) CampaignCriterionOption

type CampaignCriterionQueryBuilder

type CampaignCriterionQueryBuilder struct {
	*QueryBuilder[CampaignCriterionFilter]
}

func NewCampaignCriterionQueryBuilder

func NewCampaignCriterionQueryBuilder() *CampaignCriterionQueryBuilder

func (*CampaignCriterionQueryBuilder) Where

type CampaignFilter

type CampaignFilter Filter

func CampaignById

func CampaignById(id string) CampaignFilter

func CampaignByResourceName

func CampaignByResourceName(resourceName string) CampaignFilter

type CampaignKeywordMatchType

type CampaignKeywordMatchType func(campaign *resources.Campaign)

type CampaignQueryBuilder

type CampaignQueryBuilder struct {
	*QueryBuilder[CampaignFilter]
}

func NewCampaignQueryBuilder

func NewCampaignQueryBuilder(withBudget bool) *CampaignQueryBuilder

func (*CampaignQueryBuilder) Where

type Campaigns

type Campaigns []*Campaign

func ListCampaigns

func ListCampaigns(ctx context.Context, customerId string, filters ...CampaignFilter) (Campaigns, error)

type ChannelType

type ChannelType string
const (
	ChannelTypeSearch         ChannelType = "SEARCH"
	ChannelTypePerformanceMax ChannelType = "PERFORMANCE_MAX"
)

func (ChannelType) String

func (ct ChannelType) String() string

type Config

type Config struct {
	ClientID        string
	ClientSecret    string
	RefreshToken    string
	DeveloperToken  string
	LoginCustomerID string
}

Config holds the configuration for the Google Ads API connection.

type Customer

type Customer struct {
	*resources.Customer
	Assets CustomerAssets
}

func FetchCustomer

func FetchCustomer(ctx context.Context, id string) (*Customer, error)

func NewCustomer

func NewCustomer(name string) *Customer

func (*Customer) Create

func (c *Customer) Create(ctx context.Context, parent *Customer) error

func (*Customer) CreateAccountBudget

func (c *Customer) CreateAccountBudget(ctx context.Context, bs *BillingSetup) (*AccountBudget, error)

func (*Customer) CreateAssets

func (c *Customer) CreateAssets(ctx context.Context) error

func (*Customer) CreateBillingSetup

func (c *Customer) CreateBillingSetup(ctx context.Context, paymentsAccountId string) (*BillingSetup, error)

func (Customer) FetchCampaign

func (c Customer) FetchCampaign(ctx context.Context, id string) (*Campaign, error)

func (Customer) GetCurrency

func (c Customer) GetCurrency() string

func (Customer) GetId

func (c Customer) GetId() string

func (Customer) GetName

func (c Customer) GetName() string

func (Customer) GetTrackingUrl

func (c Customer) GetTrackingUrl() string

func (Customer) IsAutoTaggingEnabled

func (c Customer) IsAutoTaggingEnabled() bool

func (Customer) IsManager

func (c Customer) IsManager() bool

func (Customer) IsTestAccount

func (c Customer) IsTestAccount() bool

func (Customer) ListAssets

func (c Customer) ListAssets(ctx context.Context) (CustomerAssets, error)

func (Customer) ListCampaigns

func (c Customer) ListCampaigns(ctx context.Context) (Campaigns, error)

func (*Customer) SetAutoTagging

func (c *Customer) SetAutoTagging(enabled bool)

func (*Customer) SetCurrency

func (c *Customer) SetCurrency(code string)

func (*Customer) SetFinalUrlSuffix

func (c *Customer) SetFinalUrlSuffix(suffix string)

func (*Customer) SetId

func (c *Customer) SetId(id string)

func (*Customer) SetIsManager

func (c *Customer) SetIsManager(manager bool)

func (*Customer) SetName

func (c *Customer) SetName(name string)

func (*Customer) SetTestAccount

func (c *Customer) SetTestAccount(test bool)

func (*Customer) SetTimeZone

func (c *Customer) SetTimeZone(tz string)

func (*Customer) SetTrackingUrl

func (c *Customer) SetTrackingUrl(url string)

type CustomerAsset

type CustomerAsset struct {
	*resources.CustomerAsset
	Asset *Asset
}

func FetchCustomerAsset

func FetchCustomerAsset(ctx context.Context, customerId string, filters ...CustomerAssetFilter) (*CustomerAsset, error)

func ListCustomerAssets

func ListCustomerAssets(ctx context.Context, customerId string, filters ...CustomerAssetFilter) ([]*CustomerAsset, error)

type CustomerAssetFilter

type CustomerAssetFilter func() string

func CustomerAssetByAsset

func CustomerAssetByAsset(resourceName string) CustomerAssetFilter

func CustomerAssetByCustomer

func CustomerAssetByCustomer(resourceName string) CustomerAssetFilter

func CustomerAssetByResourceName

func CustomerAssetByResourceName(resourceName string) CustomerAssetFilter

type CustomerAssetQueryBuilder

type CustomerAssetQueryBuilder struct {
	*QueryBuilder[CustomerAssetFilter]
}

func NewCustomerAssetQueryBuilder

func NewCustomerAssetQueryBuilder() *CustomerAssetQueryBuilder

func (*CustomerAssetQueryBuilder) Where

type CustomerAssets

type CustomerAssets []*CustomerAsset

func (*CustomerAssets) Add

func (c *CustomerAssets) Add(asset *CustomerAsset, options ...AssetOption)
func (c *CustomerAssets) AddBusinessLogo(source AssetImageSource) error

func (*CustomerAssets) AddBusinessName

func (c *CustomerAssets) AddBusinessName(name string)

func (*CustomerAssets) AddCallout

func (c *CustomerAssets) AddCallout(text string)

func (*CustomerAssets) AddImage

func (c *CustomerAssets) AddImage(source AssetImageSource) error
func (c *CustomerAssets) AddSitelink(text, finalUrl string, description string)

func (*CustomerAssets) AddStructuredSnippet

func (c *CustomerAssets) AddStructuredSnippet(header string, values ...string)

type CustomerQueryBuilder

type CustomerQueryBuilder struct {
	*QueryBuilder[Filter]
}

func NewCustomerQueryBuilder

func NewCustomerQueryBuilder() *CustomerQueryBuilder

type DeviceType

type DeviceType func(device *common.DeviceInfo)

type Filter

type Filter func() string

type GeoTargetType

type GeoTargetType string
const (
	GeoTargetTypeInterest           GeoTargetType = "INTEREST"
	GeoTargetTypePresenceOrInterest GeoTargetType = "PRESENCE_OR_INTEREST"
)

func (GeoTargetType) String

func (g GeoTargetType) String() string

type GeoTargetTypeSetting

type GeoTargetTypeSetting func(setting *resources.Campaign_GeoTargetTypeSetting)

type KeywordMatchType

type KeywordMatchType string
const (
	KeywordMatchTypePhrase KeywordMatchType = "PHRASE"
	KeywordMatchTypeExact  KeywordMatchType = "EXACT"
	KeywordMatchTypeBroad  KeywordMatchType = "BROAD"
)

func (KeywordMatchType) String

func (k KeywordMatchType) String() string

type Objective

type Objective string
const (
	ObjectiveConversions Objective = "CONVERSIONS"
	ObjectiveClicks      Objective = "CLICKS"
)

func (Objective) String

func (o Objective) String() string

type QueryBuilder

type QueryBuilder[F ~func() string] struct {
	// contains filtered or unexported fields
}

func NewQueryBuilder

func NewQueryBuilder[F ~func() string]() *QueryBuilder[F]

func (*QueryBuilder[F]) Build

func (b *QueryBuilder[F]) Build() string

func (*QueryBuilder[F]) From

func (b *QueryBuilder[F]) From(resource string) *QueryBuilder[F]

func (*QueryBuilder[F]) Select

func (b *QueryBuilder[F]) Select(fields ...string) *QueryBuilder[F]

func (*QueryBuilder[F]) Where

func (b *QueryBuilder[F]) Where(clauses ...F) *QueryBuilder[F]

Source Files

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL