"حملات الأداء الأفضل" التي تستخدِم AdsApp

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