Page Summary
-
Price extensions can be created using
AdsApp.extensions().newPriceBuilder()and adding price items built withAdsApp.extensions().newPriceItemBuilder(). -
Price extensions can be added to campaigns, ad groups, or the account using the
addPrice()method. -
Details and statistics for price extensions can be logged using
campaign.extensions().prices().get()and thegetStatsFor()method. -
Schedules for price extensions can be set for specific days and times using the
setSchedules()method on a retrieved price extension.
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 ; } } }

