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

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

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

تتوفّر "حملات 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. يمكنك إنشاء إعلانات جديدة عن المنتجات باستخدام طريقة ShoppingAdGroup newAdBuilder().

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

يمكنك الوصول إلى جذر التسلسل الهرمي لمجموعة المنتجات باستخدام طريقة 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. يمكنك الاطّلاع على مزيد من المعلومات حول الإبلاغ في دليل التقارير.