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

Скрипты 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, которые помогают отслеживать эффективность торговых кампаний. Подробнее об отчетах…