실적 극대화 : 실적 극대화 캠페인
컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.
function getAllPerformanceMaxCampaigns() { // AdsApp.performanceMaxCampaigns() will return all campaigns that are not // removed by default. const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns().get(); console.log(`Total campaigns found : ${performanceMaxCampaignIterator.totalNumEntities()}`); return performanceMaxCampaignIterator; }
사용
const performanceMaxCampaigns = getAllPerformanceMaxCampaigns(); for (const performanceMaxCampaign of performanceMaxCampaigns) { // Process your campaign. }
function getPerformanceMaxCampaignByName(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (!performanceMaxCampaignIterator.hasNext()) { throw new Error(`No performance max campaign with name ${campaignName} found.`); } const performanceMaxCampaign = performanceMaxCampaignIterator.next(); console.log(`Campaign Name: ${performanceMaxCampaign.getName()}`); console.log(`Enabled: ${performanceMaxCampaign.isEnabled()}`); console.log(`Bidding strategy: ${performanceMaxCampaign.getBiddingStrategyType()}`); console.log(`Ad rotation: ${performanceMaxCampaign.getAdRotationType()}`); console.log(`Start date: ${formatDate(performanceMaxCampaign.getStartDate())}`); console.log(`End date: ${formatDate(performanceMaxCampaign.getEndDate())}`); return performanceMaxCampaign; } function formatDate(date) { function zeroPad(number) { return Utilities.formatString('%02d', number); } return (date == null) ? 'None' : zeroPad(date.year) + zeroPad(date.month) + zeroPad(date.day); }
function getPerformanceMaxCampaignStats(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (!performanceMaxCampaignIterator.hasNext()) { throw new Error(`No performance max campaign with name ${campaignName} found.`); } const performanceMaxCampaign = performanceMaxCampaignIterator.next(); // Fetch stats for the last month. See the DateRangeLiteral section at // https://developers.google.com/adwords/api/docs/guides/awql#formal_grammar // for a list of all supported pre-defined date ranges. // Note: Reports can also be used to fetch stats. See // https://developers.google.com/google-ads/scripts/docs/features/reports // for more information. var stats = performanceMaxCampaign.getStatsFor('LAST_MONTH'); console.log(`${performanceMaxCampaign.getName()}, ${stats.getImpressions()} impressions, ` + `${stats.getViews()} views`); return stats; }
function pausePerformanceMaxCampaign(campaignName) { const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns() .withCondition(`campaign.name = "${campaignName}"`) .get(); if (performanceMaxCampaignIterator.hasNext()) { const performanceMaxCampaign = performanceMaxCampaignIterator.next(); performanceMaxCampaign.pause(); } }
이름으로 애셋 그룹 검색
function getAssetGroupByName(campaignName, assetGroupName) { // Defined above const performanceMaxCampaign = getPerformanceMaxCampaignByName(campaignName); if (performanceMaxCampaign == null) { return null; } const assetGroupIterator = performanceMaxCampaign.assetGroups() .withCondition(`asset_group.name = "${assetGroupName}"`) .get(); if (!assetGroupIterator.hasNext()) { throw new Error(`No asset group found with name ${assetGroupName}.`); } return assetGroupIterator.next(); }
애셋 그룹 일시중지
function pausePerformanceMaxAssetGroup(campaignName, assetGroupName) { // Defined above const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.pause(); console.log(`AssetGroup with name: ${assetGroup.getName()} ` + `has paused status: ${assetGroup.isPaused()}`); }
애셋 그룹에 사용할 특정 동영상 검색
function getVideoByYouTubeId(youTubeVideoId) { // You can filter on the YouTubeVideoId if you already have that video in // your account to fetch the exact one you want right away. const videos = AdsApp.adAssets().assets() .withCondition(`asset.type = YOUTUBE_VIDEO AND ` + `asset.youtube_video_asset.youtube_video_id = '${youTubeVideoId}'`) .get(); if (videos.hasNext()) { return videos.next(); } return null; }
애셋 그룹에 특정 동영상 추가하기
function addVideoToAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.addAsset(video, 'YOUTUBE_VIDEO'); }
애셋 그룹에서 특정 동영상 삭제하기
function removeVideoFromAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.removeAsset(video, 'YOUTUBE_VIDEO'); }
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 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 to manage Google Ads Performance Max campaigns, including retrieving, pausing, and getting stats for campaigns and asset groups.\u003c/p\u003e\n"],["\u003cp\u003eYou can retrieve campaigns by name or iterate through all of them, and access campaign details like bidding strategy and start/end dates.\u003c/p\u003e\n"],["\u003cp\u003eAsset group management includes retrieving by name, pausing, and adding or removing specific videos identified by their YouTube IDs.\u003c/p\u003e\n"],["\u003cp\u003eFunctions to get campaign and asset group stats are included, utilizing predefined date ranges or enabling the use of reports for more customized analysis.\u003c/p\u003e\n"],["\u003cp\u003eError handling is incorporated to identify and report when campaigns or asset groups with specified names are not found.\u003c/p\u003e\n"]]],[],null,["Retrieve all performance max campaigns \n\n```gdscript\nfunction getAllPerformanceMaxCampaigns() {\n // AdsApp.performanceMaxCampaigns() will return all campaigns that are not\n // removed by default.\n const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns().get();\n console.log(`Total campaigns found : ${performanceMaxCampaignIterator.totalNumEntities()}`);\n return performanceMaxCampaignIterator;\n}\n```\n\nUsage \n\n```gdscript\nconst performanceMaxCampaigns = getAllPerformanceMaxCampaigns();\n\nfor (const performanceMaxCampaign of performanceMaxCampaigns) {\n\n // Process your campaign.\n}\n```\n\nRetrieve a performance max campaign by its name \n\n```gdscript\nfunction getPerformanceMaxCampaignByName(campaignName) {\n const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns()\n .withCondition(`campaign.name = \"${campaignName}\"`)\n .get();\n if (!performanceMaxCampaignIterator.hasNext()) {\n throw new Error(`No performance max campaign with name ${campaignName} found.`);\n }\n const performanceMaxCampaign = performanceMaxCampaignIterator.next();\n console.log(`Campaign Name: ${performanceMaxCampaign.getName()}`);\n console.log(`Enabled: ${performanceMaxCampaign.isEnabled()}`);\n console.log(`Bidding strategy: ${performanceMaxCampaign.getBiddingStrategyType()}`);\n console.log(`Ad rotation: ${performanceMaxCampaign.getAdRotationType()}`);\n console.log(`Start date: ${formatDate(performanceMaxCampaign.getStartDate())}`);\n console.log(`End date: ${formatDate(performanceMaxCampaign.getEndDate())}`);\n return performanceMaxCampaign;\n}\n\nfunction formatDate(date) {\n function zeroPad(number) { return Utilities.formatString('%02d', number); }\n return (date == null) ? 'None' : zeroPad(date.year) + zeroPad(date.month) +\n zeroPad(date.day);\n}\n```\n\nRetrieve a performance max campaign's stats \n\n```gdscript\nfunction getPerformanceMaxCampaignStats(campaignName) {\n const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns()\n .withCondition(`campaign.name = \"${campaignName}\"`)\n .get();\n if (!performanceMaxCampaignIterator.hasNext()) {\n throw new Error(`No performance max campaign with name ${campaignName} found.`);\n }\n const performanceMaxCampaign = performanceMaxCampaignIterator.next();\n // Fetch stats for the last month. See the DateRangeLiteral section at\n // https://developers.google.com/adwords/api/docs/guides/awql#formal_grammar\n // for a list of all supported pre-defined date ranges.\n // Note: Reports can also be used to fetch stats. See\n // https://developers.google.com/google-ads/scripts/docs/features/reports\n // for more information.\n var stats = performanceMaxCampaign.getStatsFor('LAST_MONTH');\n console.log(`${performanceMaxCampaign.getName()}, ${stats.getImpressions()} impressions, ` +\n `${stats.getViews()} views`);\n return stats;\n}\n```\n\nPause a performance max campaign \n\n```gdscript\nfunction pausePerformanceMaxCampaign(campaignName) {\n const performanceMaxCampaignIterator = AdsApp.performanceMaxCampaigns()\n .withCondition(`campaign.name = \"${campaignName}\"`)\n .get();\n if (performanceMaxCampaignIterator.hasNext()) {\n const performanceMaxCampaign = performanceMaxCampaignIterator.next();\n performanceMaxCampaign.pause();\n }\n}\n```\n\nRetrieve an asset group by its name \n\n```gdscript\nfunction getAssetGroupByName(campaignName, assetGroupName) {\n // Defined above\n const performanceMaxCampaign = getPerformanceMaxCampaignByName(campaignName);\n if (performanceMaxCampaign == null) {\n return null;\n }\n const assetGroupIterator = performanceMaxCampaign.assetGroups()\n .withCondition(`asset_group.name = \"${assetGroupName}\"`)\n .get();\n if (!assetGroupIterator.hasNext()) {\n throw new Error(`No asset group found with name ${assetGroupName}.`);\n }\n return assetGroupIterator.next();\n}\n```\n\nPause an asset group \n\n```gdscript\nfunction pausePerformanceMaxAssetGroup(campaignName, assetGroupName) {\n // Defined above\n const assetGroup = getAssetGroupByName(campaignName, assetGroupName);\n assetGroup.pause();\n console.log(`AssetGroup with name: ${assetGroup.getName()} ` +\n `has paused status: ${assetGroup.isPaused()}`);\n}\n```\n\nRetrieve a specific video for use in an asset group \n\n```gdscript\nfunction getVideoByYouTubeId(youTubeVideoId) {\n // You can filter on the YouTubeVideoId if you already have that video in\n // your account to fetch the exact one you want right away.\n const videos = AdsApp.adAssets().assets()\n .withCondition(`asset.type = YOUTUBE_VIDEO AND ` +\n `asset.youtube_video_asset.youtube_video_id = '${youTubeVideoId}'`)\n .get();\n if (videos.hasNext()) {\n return videos.next();\n }\n return null;\n}\n```\n\nAdd a specific video to an asset group \n\n```gdscript\nfunction addVideoToAssetGroup(youTubeVideoId, campaignName, assetGroupName) {\n // Defined above\n const video = getVideoByYouTubeId(youTubeVideoId);\n const assetGroup = getAssetGroupByName(campaignName, assetGroupName);\n assetGroup.addAsset(video, 'YOUTUBE_VIDEO');\n}\n```\n\nRemove a specific video from an asset group \n\n```gdscript\nfunction removeVideoFromAssetGroup(youTubeVideoId, campaignName, assetGroupName) {\n // Defined above\n const video = getVideoByYouTubeId(youTubeVideoId);\n const assetGroup = getAssetGroupByName(campaignName, assetGroupName);\n assetGroup.removeAsset(video, 'YOUTUBE_VIDEO');\n}\n```"]]