Twilio
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
SMS 메시지 보내기
/** * 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}; }
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2025-08-21(UTC)
[[["이해하기 쉬움","easyToUnderstand","thumb-up"],["문제가 해결됨","solvedMyProblem","thumb-up"],["기타","otherUp","thumb-up"]],[["필요한 정보가 없음","missingTheInformationINeed","thumb-down"],["너무 복잡함/단계 수가 너무 많음","tooComplicatedTooManySteps","thumb-down"],["오래됨","outOfDate","thumb-down"],["번역 문제","translationIssue","thumb-down"],["샘플/코드 문제","samplesCodeIssue","thumb-down"],["기타","otherDown","thumb-down"]],["최종 업데이트: 2025-08-21(UTC)"],[[["\u003cp\u003eThis script enables sending SMS messages directly from Google Ads scripts using the Twilio API.\u003c/p\u003e\n"],["\u003cp\u003eIt requires essential Twilio account details like Account SID, Auth Token, and the designated Twilio phone number for sending messages.\u003c/p\u003e\n"],["\u003cp\u003eThe script includes error handling, notifying a specified email address in case of sending failures.\u003c/p\u003e\n"],["\u003cp\u003eIt limits SMS messages to 1600 characters, adhering to Twilio's message length constraints.\u003c/p\u003e\n"],["\u003cp\u003eThe script facilitates building and sending an SMS request and has retry mechanisms for handling temporary errors.\u003c/p\u003e\n"]]],[],null,["Send a SMS message \n\n```gdscript\n/**\n * An example of sending SMS messages from Google Ads Scripts using Twilio.\n * See: https://developers.google.com/google-ads/scripts/docs/features/third-party-apis#basic_authentication_samples\n * for full details on configuration.\n */\n\n// Supply an email address: If for some reason your Twilio account\n// details become invalid or change, this will be used to make sure\n// you are notified of failure.\nconst EMAIL_ADDRESS = 'INSERT_EMAIL_ADDRESS';\n\n// The Twilio phone number or short code, as per the Phone Numbers Dashboard\n// https://www.twilio.com/console/phone-numbers/incoming\nconst TWILIO_SRC_PHONE_NUMBER = 'INSERT_TWILIO_SRC_PHONE_NUMBER';\n\n// Your Twilio Account SID, see: https://www.twilio.com/console\nconst TWILIO_ACCOUNT_SID = 'INSERT_TWILIO_ACCOUNT_SID';\n\n// Your Twilio API Auth Token, see: https://www.twilio.com/console\nconst TWILIO_ACCOUNT_AUTHTOKEN = 'INSERT_TWILIO_ACCOUNT_AUTHTOKEN';\n\n/**\n * Builds an SMS message for sending with Twilio and sends the message.\n * @param {string} dstPhoneNumber The destination number. This is a string as\n * telephone numbers may contain '+'s or be prefixed with '00' etc.\n * @param {string} message The text message to send.\n */\nfunction sendTwilioSms(dstPhoneNumber, message) {\n const request =\n buildTwilioMessageRequest(dstPhoneNumber, message);\n sendSms(request);\n}\n\n/**\n * Send an SMS message\n * @param {!SmsRequest} request The request object to send\n */\nfunction sendSms(request) {\n const retriableErrors = [429, 500, 503];\n\n for (let attempts = 0; attempts \u003c 3; attempts++) {\n const response = UrlFetchApp.fetch(request.url, request.options);\n const responseCode = response.getResponseCode();\n\n if (responseCode \u003c 400 || retriableErrors.indexOf(responseCode) === -1) {\n break;\n }\n Utilities.sleep(2000 * Math.pow(2, attempts));\n }\n\n if (responseCode \u003e= 400 && EMAIL_ADDRESS) {\n MailApp.sendEmail(\n EMAIL_ADDRESS, 'Error sending SMS Message from Google Ads Scripts',\n response.getContentText());\n }\n}\n\n/**\n * Builds a SMS request object specific for the Twilio service.\n * @param {string} recipientPhoneNumber Destination number including country\n * code.\n * @param {string} textMessage The message to send.\n * @return {SmsRequest}\n */\nfunction buildTwilioMessageRequest(recipientPhoneNumber, textMessage) {\n if (!recipientPhoneNumber) {\n throw Error('No \"recipientPhoneNumber\" specified in call to ' +\n 'buildTwilioMessageRequest. \"recipientPhoneNumber\" cannot be empty');\n }\n if (!textMessage) {\n throw Error('No \"textMessage\" specified in call to ' +\n 'buildTwilioMessageRequest. \"textMessage\" cannot be empty');\n }\n const twilioUri = `https://api.twilio.com/2010-04-01/Accounts/${TWILIO_ACCOUNT_SID}/Messages`;\n const authHeader = 'Basic ' +\n Utilities.base64Encode(\n TWILIO_ACCOUNT_SID + ':' + TWILIO_ACCOUNT_AUTHTOKEN);\n const options = {\n muteHttpExceptions: true,\n method: 'POST',\n headers: {Authorization: authHeader},\n payload: {\n From: TWILIO_SRC_PHONE_NUMBER,\n To: recipientPhoneNumber,\n // Twilio only accepts up to 1600 characters\n Body: textMessage.substr(0, 1600)\n }\n };\n return {url: twilioUri, options: options};\n}\n```"]]