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

توفّر نصوص "إعلانات 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 لمساعدتك في تتبُّع أداء حملات Shopping. يمكنك الاطّلاع على مزيد من المعلومات عن إعداد التقارير في دليل التقارير.