Торговые кампании

Скрипты Google Рекламы позволяют управлять торговыми кампаниями. С помощью скриптов можно работать с существующими торговыми кампаниями, создавать иерархии групп товаров и управлять ими, а также создавать отчеты. Однако с помощью скриптов нельзя создавать торговые кампании, задавать их свойства (например, приоритет кампании, фильтры ассортимента и т. д.) и связывать аккаунты Merchant Center.

Как получить данные о торговых кампаниях и группах объявлений

Торговые кампании доступны через коллекцию 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. Это проще, чем просматривать всю иерархию групп товаров, чтобы выбрать нужные для управления ставками. В следующем фрагменте кода показано, как выбрать все группы товаров, у которых за последний месяц было более пяти кликов и CTR выше 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. При этом также удаляется вся иерархия групп товаров, находящаяся ниже удаляемой группы.

Скрипты обеспечивают согласованность иерархии групп товаров после создания каждой группы, поэтому вам не нужно создавать или удалять группу товаров, соответствующую категории "Все остальное", при обновлении структуры иерархии групп товаров.

Группа товаров "Прочие"

Иерархии групп товаров в торговых кампаниях содержат группу товаров "Все остальные" ("Другие") на каждом уровне, чтобы обрабатывать товары, которые не соответствуют специальному условию, созданному вами в иерархии групп товаров. Чтобы отличить обычную группу товаров от группы "Прочие", используйте метод 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 Рекламы позволяют создать новую группу товарных объявлений с помощью метода newAdGroupBuilder объекта ShoppingCampaign. Создав ShoppingAdGroup, вы можете использовать его метод createRootProductGroup, чтобы создать новую иерархию групп товаров.

Отчеты

Скрипты Google Рекламы поддерживают отчеты product_group_view и shopping_performance_view, которые помогают отслеживать эффективность торговых кампаний. Подробнее об отчетах…