Page Summary
-
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(), andgetStatsFor(). -
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 ; } } }

