This is the legacy documentation for Google Ads scripts. Go to the current docs.

Search Audiences

Stay organized with collections Save and categorize content based on your preferences.

Add search audience to an ad group

function addSearchAudienceToAdGroup() {
  var AUDIENCE_LIST_ID = INSERT_AUDIENCE_ID_HERE;
  var CAMPAIGN_NAME = 'INSERT_CAMPAIGN_NAME_HERE';
  var ADGROUP_NAME = 'INSERT_ADGROUP_NAME_HERE';

  // Retrieve the ad group.
  var adGroup = AdsApp.adGroups()
      .withCondition('Name = "' + ADGROUP_NAME + '"')
      .withCondition('CampaignName = "' + CAMPAIGN_NAME + '"')
      .get()
      .next();

  // Create the search audience.
  var searchAudience = adGroup.targeting()
      .newUserListBuilder()
      .withAudienceId(AUDIENCE_LIST_ID)
      .withBidModifier(1.3)
      .build()
      .getResult();

  // Display the results.
  Logger.log('Search audience with name = %s and ID = %s was added to ad ' +
      'group ID: %s', searchAudience.getName(),
      searchAudience.getId().toFixed(0), adGroup.getId().toFixed(0));
}

Get ad group search audience by name

function getAdGroupSearchAudienceByName() {
  var CAMPAIGN_NAME = 'INSERT_CAMPAIGN_NAME_HERE';
  var ADGROUP_NAME = 'INSERT_ADGROUP_NAME_HERE';
  var AUDIENCE_NAME = 'INSERT_AUDIENCE_NAME_HERE';

  // Retrieve the search audience.
  var searchAudience = AdsApp.adGroupTargeting().audiences()
      .withCondition('CampaignName = ' + CAMPAIGN_NAME)
      .withCondition('AdGroupName = ' + ADGROUP_NAME)
      .withCondition('UserListName = "' + AUDIENCE_NAME + '"')
      .get()
      .next();

  // Display the results.
  Logger.log('Search audience with name = %s and ID = %s was found.',
      searchAudience.getName(), searchAudience.getId());
}

Filter ad group search audience by stats

function filterAdGroupAudienceByStats() {
  var CAMPAIGN_NAME = 'INSERT_CAMPAIGN_NAME_HERE';
  var ADGROUP_NAME = 'INSERT_ADGROUP_NAME_HERE';

  // Retrieve top performing search audiences.
  var topPerformingAudiences = AdsApp.adGrouptargeting().audiences()
      .withCondition('CampaignName = ' + CAMPAIGN_NAME)
      .withCondition('AdGroupName = ' + ADGROUP_NAME)
      .withCondition('Clicks > 30')
      .forDateRange('LAST_MONTH')
      .get();

  while (topPerformingAudiences.hasNext()) {
    var audience = topPerformingAudiences.next();
    Logger.log('Search audience with ID = %s, name = %s and audience list ' +
        'ID = %s has %s clicks.', audience.getId().toFixed(0),
        audience.getName(), audience.getAudienceId(),
        audience.getStatsFor('THIS_MONTH').getClicks());
  }
}

Exclude search audience from a campaign

function addExcludedAudienceToCampaign() {
  var CAMPAIGN_NAME = INSERT_CAMPAIGN_NAME_HERE;
  var AUDIENCE_LIST_ID = INSERT_AUDIENCE_ID_HERE;

  // Retrieve the campaign.
  var campaign = AdsApp.campaigns()
      .withCondition('Name = "' + CAMPAIGN_NAME + '"')
      .get()
      .next();

  // Create the excluded audience.
  var audience = campaign.targeting()
      .newUserListBuilder()
      .withAudienceId(AUDIENCE_LIST_ID)
      .exclude()
      .getResult();
  Logger.log('Excluded audience with ID = %s and audience list ID = %s was ' +
      'created for campaign: "%s".', audience.getId(),
       audience.getAudienceId(), campaign.getName());
}

Get excluded search audiences for a campaign

function getExcludedAudiencesForCampaign() {
  var CAMPAIGN_NAME = INSERT_CAMPAIGN_NAME_HERE;

  // Retrieve the campaign.
  var campaign = AdsApp.campaigns()
      .withCondition('Name = "' + CAMPAIGN_NAME + '"')
      .get()
      .next();

  var excludedAudiences = campaign.targeting().excludedAudiences().get();

  while (excludedAudiences.hasNext()) {
    var audience = excludedAudiences.next();
    Logger.log('Excluded audience with ID = %s, name = %s and audience list ' +
        'ID = %s was found.', audience.getId(), audience.getName(),
         audience.getAudienceId());
  }
}

Set AdGroup targeting setting

function setAdGroupTargetSetting() {
  var CAMPAIGN_NAME = 'INSERT_CAMPAIGN_NAME_HERE';
  var ADGROUP_NAME = 'INSERT_ADGROUP_NAME_HERE';

  // Retrieve the ad group.
  var adGroup = AdsApp.adGroups()
      .withCondition('Name = "' + ADGROUP_NAME + '"')
      .withCondition('CampaignName = "' + CAMPAIGN_NAME + '"')
      .get()
      .next();

  // Change the target setting to TARGET_ALL.
  adGroup.targeting().setTargetingSetting('USER_INTEREST_AND_LIST',
      'TARGET_ALL_TRUE');
}

Update audience bid modifier

function updateAudienceBidModifer() {
  var CAMPAIGN_NAME = 'INSERT_CAMPAIGN_NAME_HERE';
  var ADGROUP_NAME = 'INSERT_ADGROUP_NAME_HERE';
  var AUDIENCE_NAME = 'INSERT_AUDIENCE_NAME_HERE';

  // Create the search audience.
  var searchAudience = AdsApp.adGrouptargeting().audiences()
      .withCondition('CampaignName = ' + CAMPAIGN_NAME)
      .withCondition('AdGroupName = ' + ADGROUP_NAME)
      .withCondition('UserListName = "' + AUDIENCE_NAME + '"')
      .get()
      .next();

  searchAudience.bidding().setBidModifier(1.6);

  // Display the results.
  Logger.log('Bid modifier for Search Audience with Name = "%s" in ' +
      'Ad Group ID: "%s" was set to %s.',
       searchAudience.getName(),
       adGroup.getId().toFixed(0),
       searchAudience.bidding().getBidModifier());
}