Prices

Create a price extension

function createPrice() {   // For full details on creating a new price item, see:   // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_priceitembuilder   const priceItem1 = AdsApp.extensions().newPriceItemBuilder()       // Replace the values below with your preferred header, description,       // amount, currency code, unit type, final url, and mobile final url.       .withHeader('header1')                        // required       .withDescription('description1')              // required       .withAmount(1000000)                          // required       .withCurrencyCode('USD')                      // required       // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',       // or 'PER_NIGHT'       .withUnitType('PER_DAY')                      // required       .withFinalUrl('https://www.google.com')       .withMobileFinalUrl('https://www.google.com') // required       .build()       .getResult();    const priceItem2 = AdsApp.extensions().newPriceItemBuilder()       // Replace the values below with your preferred header, description,       // amount, currency code, unit type, final url, and mobile final url.       .withHeader('header2')                        // required       .withDescription('description2')              // required       .withAmount(2000000)                          // required       .withCurrencyCode('USD')                      // required       // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',       // or 'PER_NIGHT'       .withUnitType('PER_HOUR')                     // required       .withFinalUrl('https://www.google.com')       // required       .withMobileFinalUrl('https://www.google.com') // required       .build()       .getResult();    const priceItem3 = AdsApp.extensions().newPriceItemBuilder()       // Replace the values below with your preferred header, description,       // amount, currency code, unit type, final url, and mobile final url.       .withHeader('header3')                        // required       .withDescription('description3')              // required       .withAmount(3000000)                          // required       .withCurrencyCode('USD')                      // required       // Unit type must be one of: 'PER_HOUR', 'PER_DAY', 'PER_WEEK', 'PER_MONTH', 'PER_YEAR',       // or 'PER_NIGHT'       .withUnitType('PER_WEEK')                     // required       .withFinalUrl('https://www.google.com')       // required       .withMobileFinalUrl('https://www.google.com') // required       .build()       .getResult();    // For full details on creating a new price extension, see:   // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_pricebuilder   const newPrice = AdsApp.extensions().newPriceBuilder()       // Replace the values below with your preferred price type, language       // price qualifier, and tracking template       .withPriceType('PRODUCT_CATEGORIES')                  // required       .withLanguage('EN')                                   // required       // Price qualifier must be one of: 'FROM', 'UP_TO', 'AVERAGE'       .withPriceQualifier('UP_TO')                          // optional       .withTrackingTemplate('http://www.example.com/track') // optional       .addPriceItem(priceItem1)       .addPriceItem(priceItem2)       .addPriceItem(priceItem3)       .build()       .getResult();    // Add price to a campaign   const campaignIterator = AdsApp.campaigns()       .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')       .get();   if (campaignIterator.hasNext()) {     const campaign = campaignIterator.next();     campaign.addPrice(newPrice);   }    // Add price to an ad group   const adGroupIterator = AdsApp.adGroups()       .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')       .withCondition('ad_group.name = "INSERT_AD_GROUP_NAME_HERE"')       .get();   if (adGroupIterator.hasNext()) {     const adGroup = adGroupIterator.next();     adGroup.addPrice(newPrice);   }    // Add price to an account   const account = AdsApp.currentAccount();   account.addPrice(newPrice); }

Log price details for a campaign

function logPriceDetails() {   // Get a campaign.   const campaignIterator = AdsApp.campaigns()       .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')       .get();   if (!campaignIterator.hasNext()) {     throw new Error('Campaign not found.');   }   const campaign = campaignIterator.next();    // Retrieve the campaign's prices. Retrieving an ad group's and   // account's pricess is similar.   const priceIterator = campaign.extensions().prices().get();   for (const price of priceIterator) {     // You can also request reports for pre-defined date ranges. See     // https://developers.google.com/adwords/api/docs/guides/awql,     // DateRangeLiteral section for possible values.     const stats = price.getStatsFor('LAST_MONTH');      console.log(`Price extension price qualifier : ${ price.getPriceQualifier() }`);     console.log(`Price extension price type : ${ price.getPriceType() }`);     console.log(`mobile preferred : ${ price.isMobilePreferred() }`);     console.log(`clicks : ${ stats.getClicks() }`);     console.log(`impressions : ${ stats.getImpressions() }`);     console.log('=======');   }    console.log(`${priceIterator.totalNumEntities()} prices in the campaign`); }

Set schedule for prices in a campaign

function setPriceSchedule() {   // Get a campaign.   const campaignIterator = AdsApp.campaigns()       .withCondition('campaign.name = "INSERT_CAMPAIGN_NAME_HERE"')       .get();   if (!campaignIterator.hasNext()) {     throw new Error('Campaign not found.');   }   const campaign = campaignIterator.next();    // Retrieve the campaign's prices. Retrieving an ad group's and   // account's saitelinks is similar.   const priceIterator = campaign.extensions().prices().get();    for (const price of priceIterator) {     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.       const monday = {           dayOfWeek: 'MONDAY',           startHour: 9,           startMinute: 0,           endHour: 18,           endMinute: 0       };        const tuesday = {           dayOfWeek: 'TUESDAY',           startHour: 9,           startMinute: 0,           endHour: 18,           endMinute: 0       };        price.setSchedules([monday, tuesday]);        return;     }   } }