Page Summary
-
The provided content offers functions to manage ad groups within Google Ads, including adding, retrieving, updating, and pausing them.
-
You can retrieve all ad groups or get a specific ad group by its name.
-
The code allows for updating an ad group's default CPC bid and accessing its performance statistics for a specified date range.
-
Functions are available to pause an ad group and retrieve its device bid modifiers.
Add an ad group
function addAdGroup ( campaignName , adGroupName , defaultCpc = 1.2 ) { const campaignIterator = AdsApp . campaigns () . withCondition ( ` campaign . name = "${campaignName}" ` ) . get (); if ( ! campaignIterator . hasNext ()) { throw new Error ( ` No campaign with name "${campaignName} found`); } const campaign = campaignIterator . next (); return campaign . newAdGroupBuilder () . withName ( adGroupName ) . withCpc ( defaultCpc ) . build (); }
Get all ad groups
function getAllAdGroups () { // AdsApp . adGroups () will return all ad groups that are not removed by // default . const adGroupIterator = AdsApp . adGroups () . get (); console . log ( 'Total adGroups found : ' + adGroupIterator . totalNumEntities ()); return adGroupIterator ; }
Get an ad group by name
function getAdGroupByName ( name ) { const adGroupIterator = AdsApp . adGroups () . withCondition ( ` ad_group . name = "${name}" ` ) . get (); if ( ! adGroupIterator . hasNext ()) { throw new Error ( ` No ad group with name "${name}" found ` ); } const adGroup = adGroupIterator . next (); if ( adGroupIterator . totalNumEntities () > 1 ) { console . warn ( ` Multiple ad groups named "${name}" found . Using the one from campaign "${adGroup.getCampaign().getName()}" . ` ); } return adGroup ; }
Update an ad group's default CPC bid
function setAdGroupCpc ( name , cpc ) { const adGroupIterator = AdsApp . adGroups () . withCondition ( ` ad_group . name = "${name}" ` ) . get (); if ( ! adGroupIterator . hasNext ()) { throw new Error ( ` No ad group with name "${name}" found ` ); } const adGroup = adGroupIterator . next (); if ( adGroupIterator . totalNumEntities () > 1 ) { console . warn ( ` Multiple ad groups named "${name}" found . Using the one from campaign "${adGroup.getCampaign().getName()}" . ` ); } adGroup . bidding () . setCpc ( cpc ); }
Get an ad group's stats
function getAdGroupStats ( name , dateRange = 'LAST_MONTH' ) { const adGroupIterator = AdsApp . adGroups () . withCondition ( ` ad_group . name = "${name}" ` ) . get (); if ( ! adGroupIterator . hasNext ()) { throw new Error ( ` No ad group with name "${name}" found ` ); } const adGroup = adGroupIterator . next (); if ( adGroupIterator . totalNumEntities () > 1 ) { console . warn ( ` Multiple ad groups named "${name}" found . Using the one from campaign "${adGroup.getCampaign().getName()}" . ` ); } // You can get stats for a custom date range , or , as in this example , a predefined date range . // A list of valid predefined date ranges is available at // https : // developers . google . com / google - ads / api / docs / query / date - ranges #predefined_date_range const stats = adGroup . getStatsFor ( dateRange ); console . log ( ` $ { adGroup . getName ()}, $ { stats . getClicks ()}, $ { stats . getImpressions ()} ` ); return stats ; }
Pause an ad group
function pauseAdGroup ( name ) { const adGroupIterator = AdsApp . adGroups () . withCondition ( ` ad_group . name = "${name}" ` ) . get (); if ( ! adGroupIterator . hasNext ()) { throw new Error ( ` No ad group with name "${name}" found ` ); } const adGroup = adGroupIterator . next (); if ( adGroupIterator . totalNumEntities () > 1 ) { console . warn ( ` Multiple ad groups named "${name}" found . Using the one from campaign "${adGroup.getCampaign().getName()}" . ` ); } adGroup . pause (); }
Get an ad group's device bid modifiers
function getAdGroupBidModifiers ( name ) { const adGroupIterator = AdsApp . adGroups () . withCondition ( ` ad_group . name = "${name}" ` ) . get (); if ( ! adGroupIterator . hasNext ()) { throw new Error ( ` No ad group with name "${name}" found ` ); } const adGroup = adGroupIterator . next (); if ( adGroupIterator . totalNumEntities () > 1 ) { console . warn ( ` Multiple ad groups named "${name}" found . Using the one from campaign "${adGroup.getCampaign().getName()}" . ` ); } return { HighEndMobile : adGroup . devices () . getMobileBidModifier (), Tablet : adGroup . devices () . getTabletBidModifier (), Desktop : adGroup . devices () . getDesktopBidModifier (), }; }

