حملات التسوّق

توفر نصوص "إعلانات Google" البرمجية القدرة على إدارة حملات Shopping إلى حدٍ ما. يمكنك استخدام النصوص البرمجية للعمل مع "حملات التسوّق" الحالية وإنشاء تسلسل هرمي لمجموعات المنتجات وإدارتها وتنفيذ تقارير التسوّق. في المقابل، لا يمكنك استخدام النصوص البرمجية لإنشاء حملات تسوّق أو ضبط مواقع تسوّق على مستوى الحملة (مثل أولوية الحملة أو فلاتر المستودع أو غير ذلك) أو ربط حسابات على Merchant Center.

استرداد حملات Shopping والمجموعات الإعلانية

تتوفّر "حملات التسوّق" من خلال مجموعة shoppingCampaigns من عنصر AdsApp. يمكنك استردادها كالمعتاد من خلال البرامج النصية:

const campaignName = "My first shopping campaign";

const campaignIterator = AdsApp.shoppingCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();

for (const campaign of campaignIterator) {
  ...
}

بعد استرداد إحدى الحملات، يمكنك وضع مجموعاتها الإعلانية بطريقة مماثلة. يُفضَّل هذا فقط إذا كنت بحاجة إلى اتخاذ إجراءات على كلٍّ من الحملة ومجموعاتها الإعلانية.

const adGroupIterator = campaign.adGroups()
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();

for (const adGroup of adGroupIterator) {
    ...
}

إذا كنت تخطط لاتخاذ إجراء بشأن مجموعات إعلانية معيّنة فقط، يمكنك استخدام طريقة AdsApp.shoppingAdGroups() لجلب المجموعات الإعلانية بدون جلب الحملة أولاً:

const adGroupIterator = AdsApp.shoppingAdGroups()
    .withCondition(`campaign.name = "${campaignName}"`)
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();

for (const adGroup of adGroupIterator) {
    ...
}

إعلانات المنتجات

تتيح لك النصوص البرمجية في "إعلانات Google" استرداد إعلانات منتجاتك باستخدام طريقة ads() في ShoppingAdGroup. يمكنك إنشاء إعلانات منتجات جديدة باستخدام طريقة newAdBuilder() ShoppingAdGroup.

التكرار من خلال التسلسل الهرمي لمجموعة المنتجات

يمكنك الوصول إلى جذر العرض الهرمي لمجموعة المنتجات باستخدام طريقة rootProductGroup في ShoppingAdGroup. يمكنك بعد ذلك استخدام الطريقة children لتكرار مجموعات المنتجات الفرعية واجتياز التدرّج الهرمي لمجموعة المنتجات. وتمثِّل كل عقدة كائن ProductGroup، ويمكنك استخدام طريقة getDimension لمعرفة النوع الفعلي لمجموعة المنتجات. يمكنك أيضًا تحويله إلى نوع أكثر تحديدًا (على سبيل المثال، ProductBrand) باستخدام طريقة البث المناسبة (على سبيل المثال، asBrand). يوضّح مقتطف الرمز التالي كيفية اجتياز العرض الهرمي لمجموعة المنتجات بشكل متكرر.

walkTree(shoppingAdGroup.rootProductGroup(), 1);

function walkTree(root, level) {
  // Logger.log(root.getDimension());
  let description = "";
  switch (root.getDimension()) {
    case "ROOT":
      description = "Root";
      break;

    case "CATEGORY":
      description = root.asCategory().getName();
      break;

    case "BRAND":
      description = root.asBrand().getName();
      break;

    // Handle more types here.
    ...
  }

  if (root.isOtherCase()) {
    description = "Other";
  }

  const padding = new Array(level + 1).join('-');
  console.log("%s, %s, %s, %s, %s, %s",
             padding,
             description,
             root.getDimension(),
             root.getMaxCpc(),
             root.isOtherCase(),
             root.getId().toFixed());
  const children = root.children().get();
  for (const child of children) {
    walkTree(child, level + 1);
  }
}

اختيار مجموعة منتجات معيّنة

يمكنك اختيار مجموعات منتجات معيّنة في تدرج هرمي لمجموعة منتجات باستخدام طريقة productGroups في AdsApp أو ShoppingCampaign أو ShoppingAdGroup مثيل. وهذا المنهج أبسط من اجتياز التسلسل الهرمي لمجموعة المنتجات بأكملها عند اختيار مجموعات منتجات معيّنة لأغراض إدارة عروض الأسعار. يعرض مقتطف الرمز التالي كيفية اختيار جميع مجموعات المنتجات التي حصلت على أكثر من خمس نقرات ونسبة نقر إلى ظهور أكبر من 0.01 خلال الشهر الماضي لزيادة عرض الأسعار بمقدار 0.01.

function main() {
  const productGroups = AdsApp.productGroups()
      .withCondition("metrics.clicks > 5")
      .withCondition("metrics.ctr > 0.01")
      .forDateRange("LAST_MONTH")
      .get();
  for (const productGroup of productGroups) {
    productGroup.setMaxCpc(productGroup.getMaxCpc() + 0.01);
  }
}

تعديل العرض الهرمي لمجموعة المنتجات

يمكنك إضافة مجموعة منتجات فرعية إلى مجموعة منتجات حالية باستخدام طريقة newChild الخاصة بها. يمنحك هذا الكائن ProductGroupBuilderSpace، الذي يمكنك استخدامه بعد ذلك لإنشاء مجموعة منتجات مناسبة. يضيف مقتطف الرمز التالي قسمًا فرعيًا للعلامة التجارية "cardcow" أسفل الجذر، ثم يُقسمه فرعيًا للمنتجات الجديدة والمُجدَّدة.

const root = shoppingAdGroup.rootProductGroup();

// Add a brand product group for a "cardcow" under root.
const brandProductGroup = root.newChild()
    .brandBuilder()
    .withName("cardcow")
    .withBid(1.2)
    .build()
    .getResult();

// Add new conditions for New and Refurbished cardcow brand items.
const newItems = brandProductGroup.newChild()
    .conditionBuilder()
    .withCondition("New")
    .withBid(1.5)
    .build()
    .getResult();

// Refurbished items will use the bid from "cardcow" product group.
const refurbishedItems = brandProductGroup.newChild()
    .conditionBuilder()
    .withCondition("Refurbished")
    .build()
    .getResult();

وبالمثل، يمكنك إزالة قسم فرعي باستخدام طريقة remove ProductGroup. يؤدي ذلك أيضًا إلى حذف التسلسل الهرمي لمجموعة المنتجات بالكامل أسفل مجموعة المنتجات التي تتم إزالتها.

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

مجموعة المنتجات "كل شيء آخر"

يحتوي العرض الهرمي لمجموعة منتجات Shopping على مجموعة منتجات "كل شيء آخر" ("غير ذلك") على كل مستوى للتعامل مع المنتجات التي لا تتطابق مع الشرط المخصّص الذي أنشأته في التسلسل الهرمي لمجموعة المنتجات. يمكنك استخدام الطريقة isOtherCase للتمييز بين مجموعة المنتجات العادية التي أضفتها ومجموعة المنتجات "أخرى".

يسترد مقتطف الرمز التالي مجموعة المنتجات "أخرى" ضمن التسلسل الهرمي لمجموعة المنتجات الجذرية، ويطبع عرض سعرها.

const root = shoppingAdGroup.rootProductGroup();

const childProductGroups = root.children().get();
let everythingElseProductGroupFound = false;

for (const childProductGroup of childProductGroups) {
  if (childProductGroup.isOtherCase()) {
    console.log("'Everything else' product group found. Type of the " +
               "product group is %s and bid is %s.",
               childProductGroup.getDimension(),
               childProductGroup.getMaxCpc());
    everythingElseProductGroupFound = true;
    break;
  }
}
if (!everythingElseProductGroupFound) {
  console.log("No 'Everything else' product group found under root " +
             "product group.");
}

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

إنشاء مجموعة Shopping إعلانية جديدة

تسمح لك النصوص البرمجية في "إعلانات Google" بإنشاء مجموعة Shopping إعلانية جديدة باستخدام newAdGroupBuilder طريقة ShoppingCampaign. بعد إنشاء السمة ShoppingAdGroup، يمكنك استخدام طريقة createRootProductGroup لإنشاء تسلسل هرمي جديد لمجموعة منتجات.

التقارير

تتيح النصوص البرمجية في "إعلانات Google" استخدام تقارير product_group_view و shopping_performance_view لمساعدتك في تتبّع أداء حملات التسوّق. يمكنك الاطّلاع على مزيد من المعلومات حول إعداد التقارير في دليل التقارير.