حملات الأداء الأفضل

تتيح نصوص "إعلانات Google" البرمجية إمكانية إدارة بعض حملات الأداء الأفضل. يمكنك استخدام النصوص البرمجية لاسترداد "حملات الأداء الأفضل" وإدارة مجموعات مواد العرض وتنفيذ التقارير. ومع ذلك، لا يمكنك استخدام النصوص البرمجية لإنشاء "حملات الأداء الأفضل".

استرداد "حملات الأداء الأفضل"

تتوفّر "حملات الأداء الأفضل" من خلال مجموعة 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);

التقارير

يتمّ الإبلاغ عن "حملات الأداء الأفضل" في مرجع campaign مع أنواع الحملات الأخرى. في البداية، يمكنك استخدام شيء مثل هذا:

SELECT
  campaign.id,
  campaign.url_expansion_opt_out,
  campaign.status,
  campaign.bidding_strategy_type,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  metrics.conversions,
  metrics.all_conversions
FROM campaign
WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'
  AND metrics.clicks > 0

لا تختَر أي حقول ad_group لأنّ "حملات الأداء الأفضل" لا تحتوي على أيّ مجموعات إعلانية، لذلك لن يتمّ عرض أيّ منها. لا يمكن أيضًا تقسيم asset_group. مزيد من المعلومات حول إعداد التقارير في دليل التقارير

يمكنك أيضًا إعداد تقارير مباشرةً عن مجموعات مواد العرض. لمزيد من المعلومات حول كيفية تحقيق ذلك، اطّلِع على دليل Google Ads API حول هذا الموضوع. يمكنك إجراء أي طلب بحث تراه وتنفيذه من خلال الإجراء AdsApp.search في نصوص "إعلانات Google" البرمجية للحصول على النتائج نفسها.