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

Display

Add a placement to an existing ad group


function addPlacementToAdGroup() {
  var adGroup = AdsApp.adGroups()
      .withCondition("Name = 'INSERT_ADGROUP_NAME_HERE'")
      .withCondition('CampaignName = "INSERT_CAMPAIGN_NAME_HERE"')
      .get()
      .next();

  // Other display criteria can be built in a similar manner using the
  // corresponding builder method in the AdsApp.Display,
  // AdsApp.CampaignDisplay or AdsApp.AdGroupDisplay class.
  var placementOperation = adGroup.display()
      .newPlacementBuilder()
      .withUrl('http://www.site.com')  // required
      .withCpc(0.50)                   // optional
      .build();
  var placement = placementOperation.getResult();
  Logger.log('Placement with id = %s and url = %s was created.',
      placement.getId(), placement.getUrl());
}

Retrieve all topics in an existing ad group


function getAllTopics() {
  var adGroup = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .withCondition('CampaignName = "INSERT_CAMPAIGN_NAME_HERE"')
      .get()
      .next();

  // Other display criteria can be retrieved in a similar manner using
  // the corresponding selector methods in the AdsApp.Display,
  // AdsApp.CampaignDisplay or AdsApp.AdGroupDisplay class.
  var topicIterator = AdsApp.display()
      .topics()
      .withCondition('Impressions > 100')
      .forDateRange('LAST_MONTH')
      .orderBy('Clicks DESC')
      .get();

  while (topicIterator.hasNext()) {
    var topic = topicIterator.next();

    // The list of all topic IDs can be found on
    // https://developers.google.com/adwords/api/docs/appendix/verticals
    Logger.log('Topic with criterion id = %s and topic id = %s was ' +
        'found.', topic.getId().toFixed(0),
         topic.getTopicId().toFixed(0));
  }
}

Get stats for all audiences in an existing ad group


function getAudienceStats() {
  var adGroup = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .withCondition('CampaignName = "INSERT_CAMPAIGN_NAME_HERE"')
      .get()
      .next();

  // Other display criteria can be retrieved in a similar manner using
  // the corresponding selector methods in the AdsApp.Display,
  // AdsApp.CampaignDisplay or AdsApp.AdGroupDisplay class.
  var audienceIterator = adGroup.display()
      .audiences()
      .get();

  Logger.log('ID, Audience ID, Clicks, Impressions, Cost');

  while (audienceIterator.hasNext()) {
    var audience = audienceIterator.next();
    var stats = audience.getStatsFor('LAST_MONTH');

    // User List IDs (List IDs) are available on the details page of
    // a User List (found under the Audiences section of the Shared
    // Library)
    Logger.log('%s, %s, %s, %s, %s', audience.getId().toFixed(0),
       audience.getAudienceId(), stats.getClicks(),
       stats.getImpressions(), stats.getCost());
  }
}