Ad Groups

  • 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(),  }; }