Prices
Stay organized with collections
Save and categorize content based on your preferences.
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;
}
}
}
Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2022-03-14 UTC.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2022-03-14 UTC."],[[["This script demonstrates how to create price extensions with multiple price items, specifying details like header, description, amount, and currency."],["It shows how to add these price extensions to campaigns, ad groups, or accounts for broader or more targeted application."],["The script includes functionality to retrieve and log performance data for price extensions, such as clicks and impressions, for specific date ranges."],["It provides an example of setting custom schedules for price extensions, allowing them to be active only during specific days and times."]]],[]]