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

Prices

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;
      }
    }
  }
}