Tối đa hóa hiệu suất
Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
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; }
Cách sử dụng
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(); } }
Truy xuất nhóm thành phần theo tên
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(); }
Tạm dừng nhóm thành phần
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()}`); }
Truy xuất một video cụ thể để sử dụng trong nhóm thành phần
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; }
Thêm một video cụ thể vào nhóm thành phần
function addVideoToAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.addAsset(video, 'YOUTUBE_VIDEO'); }
Xoá một video cụ thể khỏi nhóm thành phần
function removeVideoFromAssetGroup(youTubeVideoId, campaignName, assetGroupName) { // Defined above const video = getVideoByYouTubeId(youTubeVideoId); const assetGroup = getAssetGroupByName(campaignName, assetGroupName); assetGroup.removeAsset(video, 'YOUTUBE_VIDEO'); }
Trừ phi có lưu ý khác, nội dung của trang này được cấp phép theo Giấy phép ghi nhận tác giả 4.0 của Creative Commons và các mẫu mã lập trình được cấp phép theo Giấy phép Apache 2.0. Để biết thông tin chi tiết, vui lòng tham khảo Chính sách trang web của Google Developers. Java là nhãn hiệu đã đăng ký của Oracle và/hoặc các đơn vị liên kết với Oracle.
Cập nhật lần gần đây nhất: 2025-08-21 UTC.
[[["Dễ hiểu","easyToUnderstand","thumb-up"],["Giúp tôi giải quyết được vấn đề","solvedMyProblem","thumb-up"],["Khác","otherUp","thumb-up"]],[["Thiếu thông tin tôi cần","missingTheInformationINeed","thumb-down"],["Quá phức tạp/quá nhiều bước","tooComplicatedTooManySteps","thumb-down"],["Đã lỗi thời","outOfDate","thumb-down"],["Vấn đề về bản dịch","translationIssue","thumb-down"],["Vấn đề về mẫu/mã","samplesCodeIssue","thumb-down"],["Khác","otherDown","thumb-down"]],["Cập nhật lần gần đây nhất: 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```"]]