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

توفّر نصوص "إعلانات Google" البرمجية بعض الإدارة لحملات Shopping. يمكنك استخدام البرامج النصية للعمل مع "حملات التسوّق" الحالية، وإنشاء وإدارة التسلسلات الهرمية لمجموعات المنتجات، وتشغيل تقارير التسوّق. ومع ذلك، لا يمكنك استخدام البرامج النصية من أجل إنشاء "حملات Shopping" أو ضبط خصائص 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.");
}

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

إنشاء مجموعة تسوّق إعلانية جديدة

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

التقارير

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