توفّر نصوص "إعلانات Google" البرمجية بعض إدارة حملات الأداء الأفضل. يمكنك استخدام
النصوص البرمجية لاسترداد "حملات الأداء الأفضل" وإدارة مجموعات مواد العرض وتنفيذ
التقارير، ولكن لا يمكنك استخدام النصوص البرمجية لإنشاء "حملات الأداء الأفضل". لإجراء عمليات أكثر تقدمًا، اطّلِع على الجزء المتبقّي من هذا الدليل الذي يوضّح نهجًا أكثر عمومية باستخدام mutate
.
استرداد "حملات الأداء الأفضل"
تتوفّر "حملات الأداء الأفضل" من خلال مجموعة performanceMaxCampaigns
العنصر AdsApp
. يمكنك استردادها كالمعتاد:
const campaignName = "My Performance Max campaign";
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = "${campaignName}"`)
.get();
for (const campaign of campaignIterator) {
...
}
على عكس بعض أنواع الحملات الأخرى، لا تتضمّن "حملات الأداء الأفضل" مجموعات إعلانية أو عناصر إعلانية يمكنك الاطّلاع عليها. ويتم تلقائيًا التعامل مع كل ما يتعلّق بهذه المفاهيم في الحملات الأخرى استنادًا إلى مجموعات مواد العرض التي تحدّدها.
مواد العرض ومجموعات مواد العرض
يتم عرض الإعلانات من "حملات الأداء الأفضل" استنادًا إلى مواد العرض، مثل الفيديوهات والصور والعناوين والأوصاف، سواءً كانت مقدَّمة منك أو تم إنشاؤها تلقائيًا. للحصول على نظرة عامة كاملة على أنواع مواد العرض المطلوبة، اطّلِع على دليل مواد عرض "حملات الأداء الأفضل" في Google Ads API.
يتم تجميع مواد عرض "حملات الأداء الأفضل" معًا في مجموعة مواد عرض، ويجب أن تحتوي كل "حملة أداء أفضل" على مجموعة مواد عرض واحدة على الأقل. لا يمكنك إنشاء مجموعات مواد العرض هذه مباشرةً في النصوص البرمجية، ولكن يمكنك إضافة مواد عرض و إزالتها من مجموعة مواد عرض حالية.
إضافة مادة عرض إلى مجموعة مواد عرض
أولاً، أنشئ مادة العرض:
const imageUrl = "http://www.example.com/example.png";
const imageBlob = UrlFetchApp.fetch(imageUrl).getBlob();
const assetOperation = AdsApp.adAssets().newImageAssetBuilder()
.withName("new asset name")
.withData(imageBlob)
.build();
const imageAsset = assetOperation.getResult();
بعد ذلك، باستخدام مادة العرض التي أنشأتها للتو، أضِفها إلى مجموعة مواد عرض حالية:
// First, fetch the Performance Max campaign we want to operate on.
const campaignIterator = AdsApp.performanceMaxCampaigns()
.withCondition(`campaign.name = '${campaignName}'`)
.get();
let campaign;
if (campaignIterator.hasNext()) {
campaign = campaignIterator.next();
} else {
throw `No campaign found with name ${campaignName}.`
}
// Then, get that campaign's asset groups.
const assetGroupIterator = campaign.assetGroups().get();
// The campaign must have at least one asset group, so we can just assume so here.
const assetGroup = assetGroupIterator.next();
// Add the asset from the previous step.
assetGroup.addAsset(imageAsset, 'MARKETING_IMAGE');
لاحظ أنّه عليك تحديد نوع مادة العرض في الخطوة الأخيرة. يمكنك العثور على قائمة كاملة بأنواع مواد العرض في مستندات Google Ads API.
لاستخدام مادة عرض حالية، عليك أولاً إنشاء أداة اختيار مواد العرض:
const assetSelector = AdsApp.adAssets().assets();
بعد ذلك، استخدِم فلتر withCondition
لتضييق نطاق البحث إلى مواد العرض التي تريد
التعامل معها. اطّلِع على مستندات مرجع
AssetSelector
للحصول على قائمة كاملة بخيارات الفلترة.
أخيرًا، يمكنك جلب الموسّع وتكراره كما هو الحال مع الكيانات الأخرى:
const assetIterator = assetSelector.get();
for (const asset of assetIterator) {
...
}
مواد العرض النصية
تعمل مواد العرض النصية بشكل مختلف قليلاً، إذ لا تحتاج إلى إنشاء مادة العرض مسبقًا. ما عليك سوى تحديد النص بدلاً من مادة عرض، وسيُنشئ النظام مادة العرض تلقائيًا. إذا كان النص نسخة طبق الأصل من مادة عرض نصية حالية، ستتم إعادة استخدام مادة العرض الحالية بدلاً من ذلك.
على سبيل المثال، إليك كيفية إنشاء مادة عرض للعنوان:
assetGroup.addAsset('asset text here', 'HEADLINE');
إزالة مادة عرض من مجموعة مواد عرض
يمكنك أيضًا إزالة مادة عرض من مجموعة مواد عرض، ولكن يجب أن يكون لديك حدّ أدنى من أنواع معيّنة من مواد العرض لكي تكون الحملة صالحة.
في ما يلي كيفية إزالة مادة العرض التي تمت إضافتها في المثال السابق:
assetGroup.removeAsset(imageAsset, 'MARKETING_IMAGE');
يمكنك أيضًا الحصول على قائمة بمواد العرض في مجموعة مواد عرض معيّنة باستخدام الدالة search
:
// The resource name is a unique identifier for this asset group.
const assetGroupName = assetGroup.getResourceName();
results = AdsApp.search(
`SELECT asset.resource_name, asset_group_asset.field_type
FROM asset_group_asset
WHERE asset_group.resource_name = '${assetGroupName}'`
);
يؤدي ذلك إلى اختيار اسم مورد مادة العرض كمعرّف فريد لها. يمكنك
اختيار حقول أخرى أيضًا، مثل asset.type
أو asset.text_asset.text
لمحاولة تحسين النتائج بشكلٍ أكبر. استخدِم أداة إنشاء طلبات البحث لهذا النوع من التقارير لإنشاء
طلب البحث الخاص بك.
بعد الحصول على مادة العرض المستهدَفة، اتصل بالرقم remove
في مجموعة مواد العرض لإزالة
مادة العرض من مجموعة مواد العرض:
// Let's assume at least one asset is returned. We'll just remove the first
// asset, whatever it is. In your code, customize this to choose the right asset.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);