Page Summary
-
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' ); }

