تتيح نصوص "إعلانات 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);