أفضل طريقة لإدارة "حملات الأداء الأفضل" باستخدام نصوص "إعلانات Google" البرمجية هي استخدام استراتيجية التعديل لتوفير إدارة مباشرة لحملات الأداء الأفضل. لا يمكن إنشاء "حملات الأداء الأفضل" إلا باستخدام الدالة mutate. ومع ذلك، يمكنك أيضًا استخدام عناصر AdsApp أخرى لاسترداد "حملات الأداء الأفضل" وإدارة مجموعات مواد العرض وإعداد التقارير إذا كنت تفضّل ذلك.
استرداد "حملات الأداء الأفضل"
تتوفّر "حملات الأداء الأفضل" من خلال مجموعة 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 في مجموعة مواد العرض لإزالة مادة العرض من مجموعة مواد العرض:
// This example assumes at least one asset is returned. We'll remove the first
// asset, whatever it is. In your code, customize this to choose the right
// asset to be removed.
const row_info = results.next().asset;
assetGroup.remove(row_info.asset.resource_name, row_info.asset_group_asset.field_type);