function getAllShoppingCampaigns() {
var retval = [];
var campaignIterator = AdsApp.shoppingCampaigns().get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
// Optional: Comment out if you don't need to print details.
Logger.log('Campaign Name: %s', campaign.getName());
retval.push(campaign);
}
return retval;
}
Usage
var shoppingCampaigns = getAllShoppingCampaigns();
for (var i = 0; i < shoppingCampaigns.length; i++) {
var shoppingCampaign = shoppingCampaigns[i];
// Process your campaign.
}
function getShoppingCampaignByName(campaignName) {
var campaignIterator = AdsApp.shoppingCampaigns()
.withCondition("CampaignName = '" + campaignName + "'")
.get();
while (campaignIterator.hasNext()) {
var campaign = campaignIterator.next();
Logger.log('Campaign Name: %s', campaign.getName());
}
}
function getShoppingAdGroup() {
var campaignName = 'INSERT_CAMPAIGN_NAME_HERE';
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var adGroupIterator = AdsApp.shoppingAdGroups()
.withCondition("CampaignName = '" + campaignName +
"' and AdGroupName = '" + adGroupName + "'")
.get();
while (adGroupIterator.hasNext()) {
var adGroup = adGroupIterator.next();
Logger.log(
'AdGroup Name: %s, CPC = %s, Mobile Bid ' + 'Modifier = %s',
adGroup.getName(),
adGroup.bidding().getCpc(),
adGroup.devices().getMobileBidModifier()
);
}
}
function createShoppingAdGroup() {
var campaignName = 'INSERT_CAMPAIGN_NAME_HERE';
var shoppingCampaign = AdsApp.shoppingCampaigns()
.withCondition("CampaignName = '" + campaignName + "'")
.get()
.next();
var adGroupOperation = shoppingCampaign.newAdGroupBuilder().build();
var adGroup = adGroupOperation.getResult();
Logger.log(adGroup);
}
function createTree() {
var campaignName = 'INSERT_CAMPAIGN_NAME_HERE';
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var shoppingAdGroup = AdsApp.shoppingAdGroups()
.withCondition("CampaignName = '" + campaignName +
"' and AdGroupName = '" + adGroupName + "'")
.get()
.next();
var root = shoppingAdGroup.rootProductGroup();
// The structure created is
// - root
// - cardcow brand
// - New
// - Refurbished
// - Other conditions
// - Other brands
// Add a brand product group for "cardcow" under root product group.
var brandNode = root.newChild()
.brandBuilder()
.withName('cardcow')
.withBid(1.2)
.build()
.getResult();
// Add new conditions for New and Refurbished cardcow brand items.
var newItems = brandNode.newChild()
.conditionBuilder()
.withCondition('NEW')
.build()
.getResult();
var refurbishedItems = brandNode.newChild()
.conditionBuilder()
.withCondition('REFURBISHED')
.withBid(0.9)
.build()
.getResult();
}
Traverses the product group hierarchy
function walkProductPartitionTree() {
var campaignName = 'INSERT_CAMPAIGN_NAME_HERE';
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var shoppingAdGroup = AdsApp.shoppingAdGroups()
.withCondition("CampaignName = '" + campaignName +
"' and AdGroupName = '" + adGroupName + "'")
.get()
.next();
var root = shoppingAdGroup.rootProductGroup();
walkHierarchy(root, 0);
}
function walkHierarchy(productGroup, level) {
var description = '';
if (productGroup.isOtherCase()) {
description = 'Other';
} else if (productGroup.getDimension() == 'CATEGORY') {
// Shows how to process a product group differently based on its type.
description = productGroup.asCategory().getName();
} else {
description = productGroup.getValue();
}
var padding = new Array(level + 1).join('-');
// Note: Child product groups may not have a max cpc if it has been excluded.
Logger.log(
'%s %s, %s, %s, %s, %s',
padding,
description,
productGroup.getDimension(),
productGroup.getMaxCpc(),
productGroup.isOtherCase(),
productGroup.getId().toFixed()
);
var childProductGroups = productGroup.children().get();
while (childProductGroups.hasNext()) {
var childProductGroup = childProductGroups.next();
walkHierarchy(childProductGroup, level + 1);
}
}
Gets the 'Everything else' product group
function getEverythingElseProductGroup() {
var campaignName = 'INSERT_CAMPAIGN_NAME_HERE';
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var shoppingAdGroup = AdsApp.shoppingAdGroups()
.withCondition("CampaignName = '" + campaignName +
"' and AdGroupName = '" + adGroupName + "'")
.get()
.next();
var rootProductGroup = shoppingAdGroup.rootProductGroup();
var childProductGroups = rootProductGroup.children().get();
while (childProductGroups.hasNext()) {
var childProductGroup = childProductGroups.next();
if (childProductGroup.isOtherCase()) {
// Note: Child product groups may not have a max cpc if it has been
// excluded.
Logger.log(
'"Everything else" product group found. Type of the product ' +
'group is %s and bid is %s.',
childProductGroup.getDimension(),
childProductGroup.getMaxCpc());
return;
}
}
Logger.log('"Everything else" product group not found under root ' +
'product group.');
}
Update bids for product groups
function updateProductGroupBid() {
var productGroups = AdsApp.productGroups()
.withCondition('Clicks > 5')
.withCondition('Ctr > 0.01')
.forDateRange('LAST_MONTH')
.get();
while (productGroups.hasNext()) {
var productGroup = productGroups.next();
productGroup.setMaxCpc(productGroup.getMaxCpc() + 0.01);
}
}
Retrieve product ads
function getProductAds() {
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var shoppingAdGroup = AdsApp.shoppingAdGroups()
.withCondition("AdGroupName = '" + adGroupName + "'")
.get()
.next();
var productAds = shoppingAdGroup.ads().get();
while (productAds.hasNext()) {
var productAd = productAds.next();
Logger.log(
"Ad with ID = %s was found.",
productAd.getId().toFixed(0));
}
}
Create product ads
function createProductAd() {
var adGroupName = 'INSERT_ADGROUP_NAME_HERE';
var shoppingAdGroup = AdsApp.shoppingAdGroups()
.withCondition("AdGroupName = '" + adGroupName + "'")
.get()
.next();
var adOperation = shoppingAdGroup.newAdBuilder()
.withMobilePreferred(true)
.build();
var productAd = adOperation.getResult();
Logger.log(
"Ad with ID = %s was created.",
productAd.getId().toFixed(0));
}