Callouts

  • Callout extensions can be created using the AdsApp.extensions().newCalloutBuilder() method, requiring at least the text to be set.

  • Created callout extensions can be added to campaigns, ad groups, or the entire account using the addCallout() method.

  • Callout details and performance statistics can be retrieved for campaigns, ad groups, or accounts by iterating through their callout extensions and using methods like getText() , isMobilePreferred() , and getStatsFor() .

  • Schedules for callout extensions can be set using the setSchedules() method, defining specific days and times for the callout to show.

Create a callout extension

 function 
  
 createCallout 
 () 
  
 { 
  
 // 
  
 For 
  
 full 
  
 details 
  
 on 
  
 creating 
  
 a 
  
 new 
  
 callout 
  
 extension 
 , 
  
 see 
 : 
  
 // 
  
 https 
 : 
 // 
 developers 
 . 
 google 
 . 
 com 
 / 
 google 
 - 
 ads 
 / 
 scripts 
 / 
 docs 
 / 
 reference 
 / 
 adsapp 
 / 
 adsapp_calloutbuilder 
  
 const 
  
 newCallout 
  
 = 
  
 AdsApp 
 . 
 extensions 
 () 
 . 
 newCalloutBuilder 
 () 
  
 // 
  
 Replace 
  
 the 
  
 values 
  
 below 
  
 with 
  
 your 
  
 text 
 , 
  
 and 
  
 mobile 
  
 preferred 
  
 . 
 withText 
 ( 
 'Free Shipping' 
 ) 
  
 // 
  
 required 
  
 . 
 withMobilePreferred 
 ( 
 true 
 ) 
  
 // 
  
 optional 
  
 . 
 build 
 () 
  
 . 
 getResult 
 (); 
  
 // 
  
 Add 
  
 callout 
  
 to 
  
 a 
  
 campaign 
  
 const 
  
 campaignIterator 
  
 = 
  
 AdsApp 
 . 
 campaigns 
 () 
  
 . 
 withCondition 
 ( 
 'campaign.name = "INSERT_CAMPAIGN_NAME_HERE"' 
 ) 
  
 . 
 get 
 (); 
  
 if 
  
 ( 
 campaignIterator 
 . 
 hasNext 
 ()) 
  
 { 
  
 const 
  
 campaign 
  
 = 
  
 campaignIterator 
 . 
 next 
 (); 
  
 campaign 
 . 
 addCallout 
 ( 
 newCallout 
 ); 
  
 } 
  
 // 
  
 Add 
  
 callout 
  
 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 
 . 
 addCallout 
 ( 
 newCallout 
 ); 
  
 } 
  
 // 
  
 Add 
  
 callout 
  
 to 
  
 an 
  
 account 
  
 const 
  
 account 
  
 = 
  
 AdsApp 
 . 
 currentAccount 
 (); 
  
 account 
 . 
 addCallout 
 ( 
 newCallout 
 ); 
 } 

Log callout details for a campaign

 function 
  
 logCalloutDetails 
 () 
  
 { 
  
 // 
  
 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 callouts. Retrieving an ad group' 
 s 
  
 and 
  
 // 
  
 account 
 's calloutss is similar. 
  
 const 
  
 calloutIterator 
  
 = 
  
 campaign 
 . 
 extensions 
 () 
 . 
 callouts 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 callout 
  
 of 
  
 calloutIterator 
 ) 
  
 { 
  
 // 
  
 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 
  
 = 
  
 callout 
 . 
 getStatsFor 
 ( 
 'LAST_MONTH' 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 Callout 
  
 text 
  
 : 
  
 $ 
 { 
  
 callout 
 . 
 getText 
 () 
  
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 mobile 
  
 preferred 
  
 : 
  
 $ 
 { 
  
 callout 
 . 
 isMobilePreferred 
 () 
  
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 clicks 
  
 : 
  
 $ 
 { 
  
 stats 
 . 
 getClicks 
 () 
  
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 ` 
 impressions 
  
 : 
  
 $ 
 { 
  
 stats 
 . 
 getImpressions 
 () 
  
 } 
 ` 
 ); 
  
 console 
 . 
 log 
 ( 
 '=======' 
 ); 
  
 } 
  
 console 
 . 
 log 
 ( 
 ` 
 $ 
 { 
 calloutIterator 
 . 
 totalNumEntities 
 ()} 
  
 callouts 
  
 in 
  
 the 
  
 campaign 
 ` 
 ); 
 } 

Set schedule for callouts in a campaign

 function 
  
 setCalloutSchedule 
 () 
  
 { 
  
 // 
  
 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 callouts. Retrieving an ad group' 
 s 
  
 and 
  
 // 
  
 account 
 's saitelinks is similar. 
  
 const 
  
 calloutIterator 
  
 = 
  
 campaign 
 . 
 extensions 
 () 
 . 
 callouts 
 () 
 . 
 get 
 (); 
  
 for 
  
 ( 
 const 
  
 callout 
  
 of 
  
 calloutIterator 
 ) 
  
 { 
  
 if 
  
 ( 
 callout 
 . 
 getText 
 () 
  
 == 
  
 'Free Shipping' 
 ) 
  
 { 
  
 // 
  
 Set 
  
 callout 
  
 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 
  
 }; 
  
 callout 
 . 
 setSchedules 
 ([ 
 monday 
 , 
  
 tuesday 
 ]); 
  
 return 
 ; 
  
 } 
  
 } 
 } 
Design a Mobile Site
View Site in Mobile | Classic
Share by: