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

Prices

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

Create prices

function createPrice() {
  var priceItemBuilder = AdsApp.extensions().newPriceItemBuilder();
  var priceItem = priceItemBuilder.withHeader('header1')
      .withDescription('description1')
      .withAmount(1000000)
      .withCurrencyCode('USD')
      .withUnitType('PER_DAY')
      .withFinalUrl('https://www.google.com')
      .withMobileFinalUrl('https://www.google.com')
      .build()
      .getResult();

  priceItemBuilder = AdsApp.extensions().newPriceItemBuilder();
  var priceItem2 = priceItemBuilder.withHeader('header2')
      .withDescription('description2')
      .withAmount(2000000)
      .withCurrencyCode('USD')
      .withUnitType('NONE')
      .withFinalUrl('https://www.google.com')
      .withMobileFinalUrl('https://www.google.com')
      .build()
      .getResult();

  priceItemBuilder = AdsApp.extensions().newPriceItemBuilder();
  var priceItem3 = priceItemBuilder.withHeader('header3')
      .withDescription('description3')
      .withAmount(3000000)
      .withCurrencyCode('USD')
      .withUnitType('NONE')
      .withFinalUrl('https://www.google.com')
      .withMobileFinalUrl('https://www.google.com')
      .build()
      .getResult();

  var priceBuilder = AdsApp.extensions().newPriceBuilder();
  var price = priceBuilder.withPriceType('PRODUCT_CATEGORIES')
      .withPriceQualifier('UP_TO')
      .withTrackingTemplate('http://www.example.com/track')
      .withLanguage('EN')
      .addPriceItem(priceItem)
      .addPriceItem(priceItem2)
      .addPriceItem(priceItem3)
      .build()
      .getResult();

  // Add price extension to the account.
  AdsApp.currentAccount().addPrice(price);

  // Add price extension to an ad group.
  var adGroupIterator = AdsApp.adGroups()
      .withCondition('Name = "INSERT_ADGROUP_NAME_HERE"')
      .get();
  if (adGroupIterator.hasNext()) {
    var adGroup = adGroupIterator.next();
    adGroup.addPrice(price);
  }

  // Add price extension to a campaign.
  var campaignIterator = AdsApp.campaigns()
      .withCondition('Name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    campaign.addPrice(price);
  }
}

Get prices for a campaign

function getPricesForCampaign() {
  var campaignIterator = AdsApp.campaigns()
      .withCondition('Name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var pricesIterator = campaign.extensions().prices().get();
    while (pricesIterator.hasNext()) {
      var price = pricesIterator.next();
      Logger.log('Price extension price qualifier: ' + price.getPriceQualifier() +
          ', Price extension price type: ' + price.getPriceType() +
          ', mobile preferred: ' + price.isMobilePreferred());
    }
    Logger.log('Total count of price extensions: ' + pricesIterator.totalNumEntities());
  }
}

Get price stats for a campaign

function getPricesStats() {
  var campaignIterator = AdsApp.campaigns()
      .withCondition('Name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    // Retrieve the campaign's price extensions. Retrieving an ad group's
    // price extensions is similar.
    var pricesIterator = campaign.extensions().prices().get();

    while (pricesIterator.hasNext()) {
      var price = pricesIterator.next();

      // You can also request reports for pre-defined date ranges. Refer to
      // https://developers.google.com/adwords/api/docs/guides/awql,
      // DateRangeLiteral section for possible values.
      var stats = price.getStatsFor('LAST_MONTH');
      Logger.log(price.getId() + ', ' + stats.getClicks() + ', ' +
          stats.getImpressions());
    }
  }
}

Set schedule for prices in a campaign

function setPriceSchedule() {
  var campaignIterator = AdsApp.campaigns()
      .withCondition('Name = "INSERT_CAMPAIGN_NAME_HERE"')
      .get();
  if (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var pricesIterator = campaign.extensions().prices().get();
    var price = null;

    // Scan through the price extensions to locate the one with type set as Brands.
    while (pricesIterator.hasNext()) {
      price = pricesIterator.next();
      if (price.getPriceType() == 'BRANDS') {
        // Set price extension schedule to run only on Mondays and Tuesdays,
        // 9 AM to 6 PM. You can follow a similar approach to set schedules for
        // other ad extension types.
        var monday = {
            dayOfWeek: 'MONDAY',
            startHour: 9,
            startMinute: 0,
            endHour: 18,
            endMinute: 0
        };

        var tuesday = {
            dayOfWeek: 'TUESDAY',
            startHour: 9,
            startMinute: 0,
            endHour: 18,
            endMinute: 0
        };

        price.setSchedules([monday, tuesday]);

        return;
      }
    }
  }
}