설명선
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
콜아웃 광고 확장 만들기
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); }
캠페인의 콜아웃 세부정보 기록하기
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`); }
캠페인에서 콜아웃 일정 설정
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; } } }
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 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 provides functions for creating, analyzing, and scheduling Google Ads callout extensions.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003ecreateCallout()\u003c/code\u003e demonstrates how to generate a new callout and associate it with a campaign, ad group, or account.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003elogCalloutDetails()\u003c/code\u003e retrieves and displays performance metrics for callouts within a specified campaign.\u003c/p\u003e\n"],["\u003cp\u003e\u003ccode\u003esetCalloutSchedule()\u003c/code\u003e enables scheduling callouts to run on specific days and times, illustrated with a Monday-Tuesday, 9 AM-6 PM example.\u003c/p\u003e\n"]]],[],null,["Create a callout extension \n\n```gdscript\nfunction createCallout() {\n // For full details on creating a new callout extension, see:\n // https://developers.google.com/google-ads/scripts/docs/reference/adsapp/adsapp_calloutbuilder\n const newCallout = AdsApp.extensions().newCalloutBuilder()\n // Replace the values below with your text, and mobile preferred\n .withText('Free Shipping') // required\n .withMobilePreferred(true) // optional\n .build()\n .getResult();\n\n // Add callout to a campaign\n const campaignIterator = AdsApp.campaigns()\n .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n .get();\n if (campaignIterator.hasNext()) {\n const campaign = campaignIterator.next();\n campaign.addCallout(newCallout);\n }\n\n // Add callout to an ad group\n const adGroupIterator = AdsApp.adGroups()\n .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n .withCondition('ad_group.name = \"INSERT_AD_GROUP_NAME_HERE\"')\n .get();\n if (adGroupIterator.hasNext()) {\n const adGroup = adGroupIterator.next();\n adGroup.addCallout(newCallout);\n }\n\n // Add callout to an account\n const account = AdsApp.currentAccount();\n account.addCallout(newCallout);\n}\n```\n\nLog callout details for a campaign \n\n```gdscript\nfunction logCalloutDetails() {\n // Get a campaign.\n const campaignIterator = AdsApp.campaigns()\n .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n .get();\n if (!campaignIterator.hasNext()) {\n throw new Error('Campaign not found.');\n }\n const campaign = campaignIterator.next();\n\n // Retrieve the campaign's callouts. Retrieving an ad group's and\n // account's calloutss is similar.\n const calloutIterator = campaign.extensions().callouts().get();\n for (const callout of calloutIterator) {\n // You can also request reports for pre-defined date ranges. See\n // https://developers.google.com/adwords/api/docs/guides/awql,\n // DateRangeLiteral section for possible values.\n const stats = callout.getStatsFor('LAST_MONTH');\n\n console.log(`Callout text : ${ callout.getText() }`);\n console.log(`mobile preferred : ${ callout.isMobilePreferred() }`);\n console.log(`clicks : ${ stats.getClicks() }`);\n console.log(`impressions : ${ stats.getImpressions() }`);\n console.log('=======');\n }\n\n console.log(`${calloutIterator.totalNumEntities()} callouts in the campaign`);\n}\n```\n\nSet schedule for callouts in a campaign \n\n```gdscript\nfunction setCalloutSchedule() {\n // Get a campaign.\n const campaignIterator = AdsApp.campaigns()\n .withCondition('campaign.name = \"INSERT_CAMPAIGN_NAME_HERE\"')\n .get();\n if (!campaignIterator.hasNext()) {\n throw new Error('Campaign not found.');\n }\n const campaign = campaignIterator.next();\n\n // Retrieve the campaign's callouts. Retrieving an ad group's and\n // account's saitelinks is similar.\n const calloutIterator = campaign.extensions().callouts().get();\n\n for (const callout of calloutIterator) {\n if (callout.getText() == 'Free Shipping') {\n // Set callout extension schedule to run only on Mondays and Tuesdays,\n // 9 AM to 6 PM. You can follow a similar approach to set schedules for\n // other ad extension types.\n const monday = {\n dayOfWeek: 'MONDAY',\n startHour: 9,\n startMinute: 0,\n endHour: 18,\n endMinute: 0\n };\n\n const tuesday = {\n dayOfWeek: 'TUESDAY',\n startHour: 9,\n startMinute: 0,\n endHour: 18,\n endMinute: 0\n };\n\n callout.setSchedules([monday, tuesday]);\n\n return;\n }\n }\n}\n```"]]