AI-generated Key Takeaways
-
Code snippets demonstrate how to retrieve all Performance Max campaigns or a specific campaign by name using
AdsApp.performanceMaxCampaigns()
. -
Function examples show how to access details of a specific Performance Max campaign, including name, status, bidding strategy, and dates.
-
Instructions are provided for retrieving statistics for a Performance Max campaign, specifically showing how to get stats for the last month.
-
Code illustrates how to pause both a Performance Max campaign and an asset group within a campaign.
-
Examples show how to retrieve, add, and remove video assets from an asset group using the video's YouTube ID.
Retrieve all performance max campaigns
function getAllPerformanceMaxCampaigns() { // AdsApp.performanceMaxCampaigns() will return all campaigns that are not // removed by default. const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns().get(); console.log(`Total campaigns found : ${performanceMaxCampaignIterator.totalNumEntities()}`); return performanceMaxCampaignIterator; }
Retrieve a performance max campaign by its name
function getPerformanceMaxCampaignByName(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (!performanceMaxCampaignIterator.hasNext()) { throw new Error(`No performance max campaign with name ${campaignName} found.`); } const performanceMaxCampaign = performanceMaxCampaignIterator.next(); console.log(`Campaign Name: ${performanceMaxCampaign.getName()}`); console.log(`Enabled: ${performanceMaxCampaign.isEnabled()}`); console.log(`Bidding strategy: ${performanceMaxCampaign.getBiddingStrategyType()}`); console.log(`Ad rotation: ${performanceMaxCampaign.getAdRotationType()}`); console.log(`Start date: ${formatDate(performanceMaxCampaign.getStartDate())}`); console.log(`End date: ${formatDate(performanceMaxCampaign.getEndDate())}`); return performanceMaxCampaign; } function formatDate(date) { function zeroPad(number) { return Utilities.formatString('%02d', number); } return (date == null) ? 'None' : zeroPad(date.year) + zeroPad(date.month) + zeroPad(date.day); }
Retrieve a performance max campaign's stats
function getPerformanceMaxCampaignStats(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (!performanceMaxCampaignIterator.hasNext()) { throw new Error(`No performance max campaign with name ${campaignName} found.`); } const performanceMaxCampaign = performanceMaxCampaignIterator.next(); // Fetch stats for the last month. See the DateRangeLiteral section at // https://developers.google.com/adwords/api/docs/guides/awql#formal_grammar // for a list of all supported pre-defined date ranges. // Note: Reports can also be used to fetch stats. See // https://developers.google.com/google-ads/scripts/docs/features/reports // for more information. var stats = performanceMaxCampaign.getStatsFor('LAST_MONTH'); console.log(`${performanceMaxCampaign.getName()}, ${stats.getImpressions()} impressions, ` + `${stats.getViews()} views`); return stats; }
Pause a performance max campaign
function pausePerformanceMaxCampaign(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (performanceMaxCampaignIterator.hasNext()) { const performanceMaxCampaign = performanceMaxCampaignIterator.next(); performanceMaxCampaign.pause(); } }
Retrieve an asset group by its name
function getAssetGroupByName(campaignName, assetGroupName) { // Defined above const performanceMaxCampaign = getPerformanceMaxCampaignByName(campaignName); if (performanceMaxCampaign == null) { return null; } const assetGroupIterator = performanceMaxCampaign.assetGroups() .withCondition(`asset_group.name = "${assetGroupName}"`) .get(); if (!assetGroupIterator.hasNext()) { throw new Error(`No asset group found with name ${assetGroupName}.`); } return assetGroupIterator.next(); }
Pause an asset group
function pausePerformanceMaxAssetGroup(campaignName, assetGroupName) { // Defined above const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.pause(); console.log(`AssetGroup with name: ${assetGroup.getName()} ` + `has paused status: ${assetGroup.isPaused()}`); }
Retrieve a specific video for use in an asset group
function getVideoByYouTubeId(youTubeVideoId) { // You can filter on the YouTubeVideoId if you already have that video in // your account to fetch the exact one you want right away. const videos = AdsApp.adAssets().assets() .withCondition(`asset.type = YOUTUBE_VIDEO AND ` + `asset.youtube_video_asset.youtube_video_id = '${youTubeVideoId}'`) .get(); if (videos.hasNext()) { return videos.next(); } return null; }
Add a specific video to an asset group
function addVideoToAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.addAsset(video, 'YOUTUBE_VIDEO'); }
Remove a specific video from an asset group
function removeVideoFromAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.removeAsset(video, 'YOUTUBE_VIDEO'); }