Performa Maksimal
Tetap teratur dengan koleksi
Simpan dan kategorikan konten berdasarkan preferensi Anda.
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;
}
Penggunaan
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();
}
}
Mengambil grup aset berdasarkan namanya
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();
}
Menjeda grup aset
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()}`);
}
Mengambil video tertentu untuk digunakan dalam grup aset
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;
}
Menambahkan video tertentu ke grup aset
function addVideoToAssetGroup(youTubeVideoId, campaignName, assetGroupName) {
// Defined above
const video = getVideoByYouTubeId(youTubeVideoId);
const assetGroup = getAssetGroupByName(campaignName, assetGroupName);
assetGroup.addAsset(video, 'YOUTUBE_VIDEO');
}
Menghapus video tertentu dari grup aset
function removeVideoFromAssetGroup(youTubeVideoId, campaignName, assetGroupName) {
// Defined above
const video = getVideoByYouTubeId(youTubeVideoId);
const assetGroup = getAssetGroupByName(campaignName, assetGroupName);
assetGroup.removeAsset(video, 'YOUTUBE_VIDEO');
}
Kecuali dinyatakan lain, konten di halaman ini dilisensikan berdasarkan Lisensi Creative Commons Attribution 4.0, sedangkan contoh kode dilisensikan berdasarkan Lisensi Apache 2.0. Untuk mengetahui informasi selengkapnya, lihat Kebijakan Situs Google Developers. Java adalah merek dagang terdaftar dari Oracle dan/atau afiliasinya.
Terakhir diperbarui pada 2025-08-21 UTC.
[null,null,["Terakhir diperbarui pada 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,["# Performance Max\n\nRetrieve all performance max campaigns\n--------------------------------------\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\n### Usage\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\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\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\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\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\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\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\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\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```"]]