Page Summary
-
The provided code samples demonstrate how to create, log details for, and set schedules for call extensions in Google Ads campaigns and ad groups using Google Ads Scripts.
-
The
createPhoneNumberfunction shows how to build a new phone number extension and associate it with a campaign or ad group. -
The
logPhoneNumberDetailsfunction illustrates how to retrieve and print statistics for phone number extensions associated with a campaign. -
The
setPhoneNumberSchedulefunction demonstrates how to define and apply a specific display schedule for a phone number extension in a campaign.
Create a call extension
function createPhoneNumber () { // For full details on creating a new call extension , see : // https : // developers . google . com / google - ads / scripts / docs / reference / adsapp / adsapp_phonenumberbuilder const newPhoneNumber = AdsApp . extensions () . newPhoneNumberBuilder () // Replace the values below with your link country and phone number . withCountry ( 'US' ) . withPhoneNumber ( 'INSERT_PHONE_NUMBER_HERE' ) . build () . getResult (); // Add phone number to a campaign const campaignIterator = AdsApp . campaigns () . withCondition ( 'campaign.name = "INSERT_CAMPAIGN_NAME_HERE"' ) . get (); if ( campaignIterator . hasNext ()) { const campaign = campaignIterator . next (); campaign . addPhoneNumber ( newPhoneNumber ); } // Add phone number 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 . addPhoneNumber ( newPhoneNumber ); } }
Log phone number details for a campaign
function logPhoneNumberDetails () { // 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 phone numbers. Retrieving an ad group' s and // account 's phone number extensions is similar. const phoneNumberIterator = campaign . extensions () . phoneNumbers () . get (); for ( const phoneNumber of phoneNumberIterator ) { // 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 = phoneNumber . getStatsFor ( 'LAST_MONTH' ); console . log ( ` Phone number : $ { phoneNumber . getPhoneNumber () } ` ); console . log ( ` clicks : $ { stats . getClicks () } ` ); console . log ( ` impressions : $ { stats . getImpressions () } ` ); console . log ( '=======' ); } console . log ( ` $ { phoneNumberIterator . totalNumEntities ()} phone number extensions in the campaign ` ); }
Set schedule for a call extension in a campaign
function setPhoneNumberSchedule () { // 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 phone numbers. Retrieving an ad group' s and // account 's phone number extensions is similar. const phoneNumberIterator = campaign . extensions () . phoneNumbers () . get (); for ( const phoneNumber of phoneNumberIterator ) { if ( phoneNumber . getPhoneNumber () === 'INSERT_PHONE_NUMBER_HERE' ) { // Set phone number schedule to run only on Mondays and Tuesdays , 9 AM to // 6 PM . const monday = { dayOfWeek : 'MONDAY' , startHour : 9 , startMinute : 0 , endHour : 18 , endMinute : 0 }; const tuesday = { dayOfWeek : 'TUESDAY' , startHour : 9 , startMinute : 0 , endHour : 18 , endMinute : 0 }; phoneNumber . setSchedules ([ monday , tuesday ]); break ; } } }

