Page Summary
-
This content demonstrates how to send SMS messages from Google Ads Scripts using the Twilio API.
-
To set up SMS sending, you need to configure your email address for notifications, your Twilio source phone number, account SID, and auth token.
-
The
sendTwilioSmsfunction takes a destination phone number and a message to send an SMS. -
The script includes error handling and retry logic for sending the SMS, with email notification for failures.
-
The
buildTwilioMessageRequestfunction constructs the necessary request object for the Twilio API, including authentication headers and message payload.
Send a SMS message
/** * An example of sending SMS messages from Google Ads Scripts using Twilio . * See : https : // developers . google . com / google - ads / scripts / docs / features / third - party - apis #basic_authentication_samples * for full details on configuration . */ // Supply an email address : If for some reason your Twilio account // details become invalid or change , this will be used to make sure // you are notified of failure . const EMAIL_ADDRESS = 'INSERT_EMAIL_ADDRESS' ; // The Twilio phone number or short code , as per the Phone Numbers Dashboard // https : // www . twilio . com / console / phone - numbers / incoming const TWILIO_SRC_PHONE_NUMBER = 'INSERT_TWILIO_SRC_PHONE_NUMBER' ; // Your Twilio Account SID , see : https : // www . twilio . com / console const TWILIO_ACCOUNT_SID = 'INSERT_TWILIO_ACCOUNT_SID' ; // Your Twilio API Auth Token , see : https : // www . twilio . com / console const TWILIO_ACCOUNT_AUTHTOKEN = 'INSERT_TWILIO_ACCOUNT_AUTHTOKEN' ; /** * Builds an SMS message for sending with Twilio and sends the message . * @ param { string } dstPhoneNumber The destination number . This is a string as * telephone numbers may contain '+' s or be prefixed with '00' etc . * @ param { string } message The text message to send . */ function sendTwilioSms ( dstPhoneNumber , message ) { const request = buildTwilioMessageRequest ( dstPhoneNumber , message ); sendSms ( request ); } /** * Send an SMS message * @ param { ! SmsRequest } request The request object to send */ function sendSms ( request ) { const retriableErrors = [ 429 , 500 , 503 ]; for ( let attempts = 0 ; attempts < 3 ; attempts ++ ) { const response = UrlFetchApp . fetch ( request . url , request . options ); const responseCode = response . getResponseCode (); if ( responseCode < 400 || retriableErrors . indexOf ( responseCode ) === - 1 ) { break ; } Utilities . sleep ( 2000 * Math . pow ( 2 , attempts )); } if ( responseCode > = 400 && EMAIL_ADDRESS ) { MailApp . sendEmail ( EMAIL_ADDRESS , 'Error sending SMS Message from Google Ads Scripts' , response . getContentText ()); } } /** * Builds a SMS request object specific for the Twilio service . * @ param { string } recipientPhoneNumber Destination number including country * code . * @ param { string } textMessage The message to send . * @ return { SmsRequest } */ function buildTwilioMessageRequest ( recipientPhoneNumber , textMessage ) { if ( ! recipientPhoneNumber ) { throw Error ( 'No "recipientPhoneNumber" specified in call to ' + 'buildTwilioMessageRequest. "recipientPhoneNumber" cannot be empty' ); } if ( ! textMessage ) { throw Error ( 'No "textMessage" specified in call to ' + 'buildTwilioMessageRequest. "textMessage" cannot be empty' ); } const twilioUri = ` https : // api . twilio . com / 2010 - 04 - 01 / Accounts /$ { TWILIO_ACCOUNT_SID } / Messages ` ; const authHeader = 'Basic ' + Utilities . base64Encode ( TWILIO_ACCOUNT_SID + ':' + TWILIO_ACCOUNT_AUTHTOKEN ); const options = { muteHttpExceptions : true , method : 'POST' , headers : { Authorization : authHeader }, payload : { From : TWILIO_SRC_PHONE_NUMBER , To : recipientPhoneNumber , // Twilio only accepts up to 1600 characters Body : textMessage . substr ( 0 , 1600 ) } }; return { url : twilioUri , options : options }; }

