Video

  • Video campaigns can be retrieved individually by name or all together using AdsApp.videoCampaigns().

  • Ad groups within video campaigns can be added, updated, retrieved, and paused.

  • Specific videos can be retrieved by their YouTube ID or by iterating through all available YouTube videos in the account.

  • Different types of video ads, such as in-stream and in-feed, can be added to video ad groups.

  • Audience targeting, such as adding in-market audiences, can be applied to video ad groups.

Retrieve all video campaigns

 function 
  
 getAllVideoCampaigns 
 () 
  
 { 
  
 // 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
  
 will 
  
 return 
  
 all 
  
 campaigns 
  
 that 
  
 are 
  
 not 
  
 // 
  
 removed 
  
 by 
  
 default 
 . 
  
 const 
  
 videoCampaignIterator 
  
 = 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
 . 
 get 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 Total 
  
 campaigns 
  
 found 
  
 : 
  
 $ 
 { 
 videoCampaignIterator 
 . 
 totalNumEntities 
 ()} 
 ` 
 ); 
  
 return 
  
 videoCampaignIterator 
 ; 
 } 

Retrieve a video campaign by its name

 function 
  
 getVideoCampaignByName 
 ( 
 campaignName 
 ) 
  
 { 
  
 const 
  
 videoCampaignIterator 
  
 = 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 campaign 
 . 
 name 
  
 = 
  
 "${campaignName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 ! 
 videoCampaignIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 throw 
  
 new 
  
 Error 
 ( 
 ` 
 No 
  
 video 
  
 campaign 
  
 with 
  
 name 
  
 $ 
 { 
 campaignName 
 } 
  
 found 
 . 
 ` 
 ); 
  
 } 
  
 const 
  
 videoCampaign 
  
 = 
  
 videoCampaignIterator 
 . 
 next 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 Campaign 
  
 Name 
 : 
  
 $ 
 { 
 videoCampaign 
 . 
 getName 
 ()} 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 Enabled 
 : 
  
 $ 
 { 
 videoCampaign 
 . 
 isEnabled 
 ()} 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 Bidding 
  
 strategy 
 : 
  
 $ 
 { 
 videoCampaign 
 . 
 getBiddingStrategyType 
 ()} 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 Ad 
  
 rotation 
 : 
  
 $ 
 { 
 videoCampaign 
 . 
 getAdRotationType 
 ()} 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 Start 
  
 date 
 : 
  
 $ 
 { 
 formatDate 
 ( 
 videoCampaign 
 . 
 getStartDate 
 ())} 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 End 
  
 date 
 : 
  
 $ 
 { 
 formatDate 
 ( 
 videoCampaign 
 . 
 getEndDate 
 ())} 
 ` 
 ); 
  
 return 
  
 videoCampaign 
 ; 
 } 
 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 video campaign's stats

 function 
  
 getVideoCampaignStats 
 ( 
 campaignName 
 ) 
  
 { 
  
 const 
  
 videoCampaignIterator 
  
 = 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 campaign 
 . 
 name 
  
 = 
  
 "${campaignName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 ! 
 videoCampaignIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 throw 
  
 new 
  
 Error 
 ( 
 ` 
 No 
  
 video 
  
 campaign 
  
 with 
  
 name 
  
 $ 
 { 
 campaignName 
 } 
  
 found 
 . 
 ` 
 ); 
  
 } 
  
 const 
  
 videoCampaign 
  
 = 
  
 videoCampaignIterator 
 . 
 next 
 (); 
  
 // 
  
 Fetch 
  
 stats 
  
 for 
  
 the 
  
 last 
  
 month 
 . 
  
 See 
  
 the 
  
 DateRangeLiteral 
  
 section 
  
 at 
  
 // 
  
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 google 
 - 
 ads 
 / 
 api 
 / 
 docs 
 / 
 query 
 / 
 date 
 - 
 ranges 
 #predefined_date_range 
  
 // 
  
 for 
  
 possible 
  
 values 
 . 
  
 // 
  
 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 
  
 = 
  
 videoCampaign 
 . 
 getStatsFor 
 ( 
 'LAST_MONTH' 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 $ 
 { 
 videoCampaign 
 . 
 getName 
 ()}, 
  
 $ 
 { 
 stats 
 . 
 getImpressions 
 ()} 
  
 impressions 
 , 
  
 ` 
  
 + 
  
 ` 
 $ 
 { 
 stats 
 . 
 getViews 
 ()} 
  
 views 
 ` 
 ); 
  
 return 
  
 stats 
 ; 
 } 

Pause a video campaign

 function 
  
 pauseVideoCampaign 
 ( 
 campaignName 
 ) 
  
 { 
  
 const 
  
 videoCampaignIterator 
  
 = 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 campaign 
 . 
 name 
  
 = 
  
 "${campaignName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 videoCampaignIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoCampaign 
  
 = 
  
 videoCampaignIterator 
 . 
 next 
 (); 
  
 videoCampaign 
 . 
 pause 
 (); 
  
 } 
 } 

Add a video ad group

 function 
  
 addVideoAdGroup 
 ( 
 campaignName 
 , 
  
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoCampaignIterator 
  
 = 
  
 AdsApp 
 . 
 videoCampaigns 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 campaign 
 . 
 name 
  
 = 
  
 "${campaignName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 videoCampaignIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoCampaign 
  
 = 
  
 videoCampaignIterator 
 . 
 next 
 (); 
  
 const 
  
 videoAdGroupOperation 
  
 = 
  
 videoCampaign 
 . 
 newVideoAdGroupBuilder 
 () 
  
 . 
 withName 
 ( 
 adGroupName 
 ) 
  
 // 
  
 This 
  
 can 
  
 also 
  
 be 
 : 
  
 // 
  
 * 
  
 VIDEO_BUMPER 
  
 // 
  
 * 
  
 VIDEO_EFFICIENT_REACH 
  
 // 
  
 * 
  
 VIDEO_NON_SKIPPABLE_IN_STREAM 
  
 // 
  
 * 
  
 VIDEO_RESPONSIVE 
  
 // 
  
 * 
  
 VIDEO_TRUE_VIEW_IN_DISPLAY 
  
 // 
  
 * 
  
 YOUTUBE_AUDIO 
  
 // 
  
 Some 
  
 types 
  
 may 
  
 only 
  
 be 
  
 usable 
  
 in 
  
 specific 
  
 ad 
  
 group 
  
 types 
 . 
  
 . 
 withAdGroupType 
 ( 
 'VIDEO_TRUE_VIEW_IN_STREAM' 
 ) 
  
 . 
 withCpv 
 ( 
 1.2 
 ) 
  
 . 
 build 
 (); 
  
 } 
 } 

Update a video ad group

 function 
  
 updateAdGroup 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 videoAdGroup 
 . 
 bidding 
 () 
 . 
 setCpv 
 ( 
 1.2 
 ); 
  
 // 
  
 update 
  
 other 
  
 properties 
  
 as 
  
 required 
  
 here 
  
 } 
 } 

Retrieve all video ad groups

 function 
  
 getAllVideoAdGroups 
 () 
  
 { 
  
 // 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 will 
  
 return 
  
 all 
  
 ad 
  
 groups 
  
 that 
  
 are 
  
 not 
  
 removed 
  
 by 
  
 // 
  
 default 
 . 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
 . 
 get 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 Total 
  
 adGroups 
  
 found 
  
 : 
  
 $ 
 { 
 videoAdGroupIterator 
 . 
 totalNumEntities 
 ()} 
 ` 
 ); 
  
 return 
  
 videoAdGroupIterator 
 ; 
 } 

Retrieve a video ad group by name

 function 
  
 getVideoAdGroupByName 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 ! 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 throw 
  
 new 
  
 Error 
 ( 
 ` 
 No 
  
 video 
  
 ad 
  
 group 
  
 found 
  
 with 
  
 name 
  
 $ 
 { 
 adGroupName 
 } 
 . 
 ` 
 ); 
  
 } 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 console 
 . 
 log 
 ( 
 'AdGroup Name: ' 
  
 + 
  
 videoAdGroup 
 . 
 getName 
 ()); 
  
 console 
 . 
 log 
 ( 
 'AdGroup Type: ' 
  
 + 
  
 videoAdGroup 
 . 
 getAdGroupType 
 ()); 
  
 console 
 . 
 log 
 ( 
 'Enabled: ' 
  
 + 
  
 videoAdGroup 
 . 
 isEnabled 
 ()); 
  
 return 
  
 videoAdGroup 
 ; 
 } 

Retrieve a video ad group's stats

 function 
  
 getVideoAdGroupStats 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 ! 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 throw 
  
 new 
  
 Error 
 ( 
 ` 
 No 
  
 video 
  
 ad 
  
 group 
  
 found 
  
 with 
  
 name 
  
 $ 
 { 
 adGroupName 
 } 
 . 
 ` 
 ); 
  
 } 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 // 
  
 You 
  
 can 
  
 also 
  
 request 
  
 reports 
  
 for 
  
 pre 
 - 
 defined 
  
 date 
  
 ranges 
 . 
  
 See 
  
 // 
  
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 google 
 - 
 ads 
 / 
 api 
 / 
 docs 
 / 
 query 
 / 
 date 
 - 
 ranges 
 #predefined_date_range 
  
 // 
  
 for 
  
 possible 
  
 values 
 . 
  
 const 
  
 stats 
  
 = 
  
 videoAdGroup 
 . 
 getStatsFor 
 ( 
 'LAST_MONTH' 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 $ 
 { 
 videoAdGroup 
 . 
 getName 
 ()}, 
  
 $ 
 { 
 stats 
 . 
 getImpressions 
 ()}, 
  
 $ 
 { 
 stats 
 . 
 getViews 
 ()} 
 ` 
 ); 
  
 return 
  
 stats 
 ; 
 } 

Pause a video ad group

 function 
  
 pauseVideoAdGroup 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 ! 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 throw 
  
 new 
  
 Error 
 ( 
 ` 
 No 
  
 video 
  
 ad 
  
 group 
  
 found 
  
 with 
  
 name 
  
 $ 
 { 
 adGroupName 
 } 
 . 
 ` 
 ); 
  
 } 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 videoAdGroup 
 . 
 pause 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 AdGroup 
  
 with 
  
 name 
 : 
  
 $ 
 { 
 videoAdGroup 
 . 
 getName 
 ()} 
  
 ` 
  
 + 
  
 ` 
 has 
  
 paused 
  
 status 
 : 
  
 $ 
 { 
 videoAdGroup 
 . 
 isPaused 
 ()} 
 ` 
 ); 
 } 

Retrieve any video for use in an ad

 function 
  
 getVideo 
 () 
  
 { 
  
 // 
  
 This 
  
 will 
  
 just 
  
 get 
  
 the 
  
 first 
  
 valid 
  
 YouTube 
  
 video 
  
 in 
  
 the 
  
 account 
 . 
  
 // 
  
 It 
  
 demonstrates 
  
 how 
  
 to 
  
 filter 
  
 to 
  
 see 
  
 if 
  
 a 
  
 video 
  
 is 
  
 valid 
  
 for 
  
 video 
  
 ads 
 . 
  
 const 
  
 videos 
  
 = 
  
 AdsApp 
 . 
 adAssets 
 () 
 . 
 assets 
 () 
  
 . 
 withCondition 
 ( 
 "asset.type = YOUTUBE_VIDEO" 
 ) 
  
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 video 
  
 of 
  
 videos 
 ) 
  
 { 
  
 // 
  
 You 
  
 have 
  
 to 
  
 use 
  
 a 
  
 YouTube 
  
 video 
  
 for 
  
 True 
  
 View 
  
 ads 
 , 
  
 so 
  
 only 
  
 return 
  
 if 
  
 // 
  
 the 
  
 YouTubeVideoId 
  
 exists 
 . 
  
 if 
 ( 
 video 
 . 
 getYouTubeVideoId 
 ()) 
  
 { 
  
 return 
  
 video 
 ; 
  
 } 
  
 } 
  
 return 
  
 null 
 ; 
 } 

Retrieve a specific video for use in an ad

 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 an in-stream video ad

 function 
  
 addInStreamVideoAd 
 ( 
 adGroupName 
 ) 
  
 { 
  
 // 
  
 If 
  
 you 
  
 have 
  
 multiple 
  
 adGroups 
  
 with 
  
 the 
  
 same 
  
 name 
 , 
  
 this 
  
 snippet 
  
 will 
  
 // 
  
 pick 
  
 an 
  
 arbitrary 
  
 matching 
  
 ad 
  
 group 
  
 each 
  
 time 
 . 
  
 In 
  
 such 
  
 cases 
 , 
  
 just 
  
 // 
  
 filter 
  
 on 
  
 the 
  
 campaign 
  
 name 
  
 as 
  
 well 
 : 
  
 // 
  
 // 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 // 
  
 . 
 withCondition 
 ( 
 'Name = "INSERT_ADGROUP_NAME_HERE"' 
 ) 
  
 // 
  
 . 
 withCondition 
 ( 
 'CampaignName = "INSERT_CAMPAIGN_NAME_HERE"' 
 ) 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 const 
  
 video 
  
 = 
  
 getVideo 
 (); 
  
 // 
  
 Defined 
  
 above 
  
 if 
  
 ( 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 videoAdGroup 
 . 
 newVideoAd 
 () 
 . 
 inStreamAdBuilder 
 () 
  
 . 
 withAdName 
 ( 
 "In Stream Ad" 
 ) 
  
 . 
 withDisplayUrl 
 ( 
 "http://www.example.com" 
 ) 
  
 . 
 withFinalUrl 
 ( 
 "http://www.example.com" 
 ) 
  
 . 
 withVideo 
 ( 
 video 
 ) 
  
 . 
 build 
 (); 
  
 } 
 } 

Add an in-feed video ad

 function 
  
 addInFeedVideoAd 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 const 
  
 video 
  
 = 
  
 getVideo 
 (); 
  
 // 
  
 Defined 
  
 above 
  
 if 
  
 ( 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 videoAdGroup 
 . 
 newVideoAd 
 () 
 . 
 inFeedAdBuilder 
 () 
  
 . 
 withAdName 
 ( 
 "In-Feed Video Ad" 
 ) 
  
 . 
 withDescription1 
 ( 
 "Description line 1" 
 ) 
  
 . 
 withDescription2 
 ( 
 "Description line 2" 
 ) 
  
 . 
 withHeadline 
 ( 
 "Headline" 
 ) 
  
 . 
 withThumbnail 
 ( 
 "DEFAULT_THUMBNAIL" 
 ) 
  
 . 
 withVideo 
 ( 
 video 
 ) 
  
 . 
 build 
 (); 
  
 } 
 } 

Pause video ads in video ad group

 function 
  
 pauseVideoAdsInVideoAdGroup 
 ( 
 adGroupName 
 ) 
  
 { 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 const 
  
 videoAdsIterator 
  
 = 
  
 videoAdGroup 
 . 
 videoAds 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 videoAd 
  
 of 
  
 videoAdsIterator 
 ) 
  
 { 
  
 videoAd 
 . 
 pause 
 (); 
  
 } 
  
 } 
 } 

Retrieve video ads in video ad group

function  
getInStreamAdsInVideoAdGroup(adGroupName)  
{  
const  
videoAdGroupIterator  
=  
AdsApp.videoAdGroups()  
.withCondition(`ad_group.name  
=  
"${adGroupName}"`)  
.get();  
if  
(!videoAdGroupIterator.hasNext())  
{  
throw  
new  
Error(`No  
video  
ad  
group  
found  
with  
name  
${adGroupName}.`);  
}  
const  
videoAdGroup  
=  
videoAdGroupIterator.next();  
const  
videoAdsIterator  
=  
videoAdGroup.videoAds()  
.withCondition('Type="TRUE_VIEW_IN_STREAM_VIDEO_AD"').get();  
console.log(`Total  
ads  
found  
:  
${videoAdsIterator.totalNumEntities()}`);  
return  
videoAdsIterator;
}

function  
logVideoAd(videoAd)  
{  
//  
Note  
that  
not  
all  
fields  
are  
populated  
for  
both  
video  
ad  
types.  
console.log('Video  
ID  
:  
'  
+  
videoAd.getVideoId());  
console.log('Headline  
:  
'  
+  
videoAd.getHeadline());  
console.log('Line1  
:  
'  
+  
videoAd.getDescription1());  
console.log('Line2  
:  
'  
+  
videoAd.getDescription2());  
console.log('Final  
URL  
:  
'  
+  
videoAd.urls().getFinalUrl());  
console.log('Display  
URL  
:  
'  
+  
videoAd.getDisplayUrl());  
console.log('Destination  
Page  
:  
'  
+  
videoAd.getDestinationPage());  
console.log('Approval  
Status  
:  
'  
+  
videoAd.getApprovalStatus());  
console.log('Enabled  
:  
'  
+  
videoAd.isEnabled());
}

Retrieve ad stats from a video ad group

 function 
  
 getVideoAdGroupAdStats 
 ( 
 adGroupName 
 ) 
  
 { 
  
 let 
  
 statsList 
  
 = 
  
 []; 
  
 const 
  
 videoAdGroupIterator 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 ` 
 ad_group 
 . 
 name 
  
 = 
  
 "${adGroupName}" 
 ` 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 videoAdGroupIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 videoAdGroup 
  
 = 
  
 videoAdGroupIterator 
 . 
 next 
 (); 
  
 const 
  
 videoAdsIterator 
  
 = 
  
 videoAdGroup 
 . 
 videoAds 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 videoAd 
  
 of 
  
 videoAdsIterator 
 ) 
  
 { 
  
 // 
  
 You 
  
 can 
  
 also 
  
 request 
  
 reports 
  
 for 
  
 pre 
 - 
 defined 
  
 date 
  
 ranges 
 . 
  
 See 
  
 // 
  
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 google 
 - 
 ads 
 / 
 api 
 / 
 docs 
 / 
 query 
 / 
 date 
 - 
 ranges 
 #predefined_date_range 
  
 // 
  
 for 
  
 possible 
  
 values 
 . 
  
 const 
  
 stats 
  
 = 
  
 videoAd 
 . 
 getStatsFor 
 ( 
 'LAST_MONTH' 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 $ 
 { 
 videoAdGroup 
 . 
 getName 
 ()}, 
  
 $ 
 { 
 stats 
 . 
 getViews 
 ()}, 
  
 $ 
 { 
 stats 
 . 
 getImpressions 
 ()} 
 ` 
 ); 
  
 statsList 
 . 
 push 
 ( 
 stats 
 ); 
  
 } 
  
 } 
  
 return 
  
 statsList 
 ; 
 } 

Add in-market audience to a video ad group

 function 
  
 addInMarketAudienceToVideoAdGroup 
 () 
  
 { 
  
 const 
  
 ag 
  
 = 
  
 AdsApp 
 . 
 videoAdGroups 
 () 
  
 . 
 withCondition 
 ( 
 'campaign.status != REMOVED' 
 ) 
  
 . 
 get 
 () 
  
 . 
 next 
 (); 
  
 console 
 . 
 log 
 ( 
 ` 
 AdGroup 
  
 ID 
  
 $ 
 { 
 ag 
 . 
 getId 
 ()}, 
  
 Campaign 
  
 ID 
  
 $ 
 { 
 ag 
 . 
 getVideoCampaign 
 () 
 . 
 getId 
 ()} 
 ` 
 ); 
  
 // 
  
 Get 
  
 the 
  
 audience 
  
 ID 
  
 from 
  
 the 
  
 list 
  
 here 
 : 
  
 // 
  
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 google 
 - 
 ads 
 / 
 api 
 / 
 reference 
 / 
 data 
 / 
 codes 
 - 
 formats 
 #in-market-categories 
  
 const 
  
 audience 
  
 = 
  
 ag 
 . 
 videoTargeting 
 () 
  
 . 
 newAudienceBuilder 
 () 
  
 . 
 withAudienceId 
 ( 
 80428 
 ) 
  
 . 
 withAudienceType 
 ( 
 'USER_INTEREST' 
 ) 
  
 . 
 build 
 (); 
  
 console 
 . 
 log 
 ( 
 'Added Audience ID 
 %s 
 ' 
 , 
  
 audience 
 . 
 getResult 
 () 
 . 
 getId 
 () 
 . 
 toString 
 ()); 
  
 const 
  
 audiences 
  
 = 
  
 ag 
 . 
 videoTargeting 
 () 
 . 
 audiences 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 aud 
  
 of 
  
 audiences 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 'Retrieved Audience ID 
 %s 
 ' 
 , 
  
 aud 
 . 
 getId 
 () 
 . 
 toString 
 ()); 
  
 } 
 } 
Design a Mobile Site
View Site in Mobile | Classic
Share by: