Типы объявлений

Google Реклама поддерживает различные типы объявлений, в том числе текстовые, графические и мобильные. В этом руководстве рассказывается, как создавать объявления, получать информацию о них и создавать отчеты с помощью скриптов Google Рекламы. Обзор всех типов объявлений, поддерживаемых Google Рекламой, можно найти в руководстве по API.

Создание

Скрипты могут создавать объявления с помощью метода newAd() в экземплярах AdGroup. Этот метод возвращает объект AdBuilderSpace, который создает объекты Builder для поддерживаемых типов объявлений.

В следующем фрагменте кода показано, как создать адаптивное поисковое объявление:

let adOperation = adGroup.newAd().responsiveSearchAdBuilder()
    .withHeadlines(["Headline 1", "Headline 2", "Headline 3"])
    .withDescriptions(["Description 1", "Description 2"])
    .withFinalUrl("http://www.example.com")
    .withPath1("path1")
    .withPath2("path2")
    .build();

Проверка

Некоторые сведения, связанные со всеми типами объявлений, например идентификатор и статус рассмотрения, можно сразу получить из объекта Ad. Кроме того, любое объявление можно приостановить, включить или удалить.

Чтобы получить доступ к полям, относящимся к определенному типу объявлений, например к заголовкам адаптивного поискового объявления, используйте метод asType() для создания AdViewSpace. Это позволяет получить доступ к расширенной версии Ad, которая предоставляет методы, зависящие от типа.

Следующий фрагмент кода позволяет получить заголовки всех адаптивных поисковых объявлений:

const iterator = AdsApp.ads().withCondition("Type = RESPONSIVE_SEARCH_AD").get();
while (iterator.hasNext()) {
  let ad = iterator.next();
  let responsiveSearchAd = ad.asType().responsiveSearchAd();
  let headlines = responsiveSearchAd.getHeadlines();
}

Обратите внимание, что условие Type = RESPONSIVE_SEARCH_AD гарантирует, что каждое объявление из итератора является адаптивным поисковым объявлением. Попытка посмотреть объявление неправильного типа приведет к ошибке, которая остановит выполнение скрипта, поэтому важно просматривать поля, относящиеся к определенному типу, только когда тип объявления известен.

В следующем фрагменте кода показано, как определить, относится ли объявление к нужному типу, с помощью метода Ad.isType():

if (ad.isType().responsiveSearchAd()) {
  let responsiveSearchAd = ad.asType().responsiveSearchAd();
  let headlines = responsiveSearchAd.getHeadlines();
  let descriptions = responsiveSearchAd.getDescriptions();
}

Хотя вы не можете фильтровать объявления по тексту заголовка с помощью стандартных селекторов, вы можете отфильтровать их в JavaScript после получения:

const iterator = AdsApp.ads().withCondition("Type = RESPONSIVE_SEARCH_AD").get();
while (iterator.hasNext()) {
  let ad = iterator.next();
  let responsiveSearchAd = ad.asType().responsiveSearchAd();
  let headlines = responsiveSearchAd.getHeadlines();
  // Filter for ads containing a specific headline.
  if (headlines.some(h => h.getText().includes("Special Offer"))) {
    console.log(`Found ad with ID ${ad.getId()}`);
  }
}

Отчеты

Представление ad_group_ad можно использовать для запроса полей объявлений в дополнение к обычной статистике. Например, вы можете отфильтровать данные по типу объявления, используя ad_group_ad.ad.type. В следующем фрагменте кода показано, как получить статистику по всем адаптивным поисковым объявлениям:

const results = AdsApp.search(
  "SELECT ad_group_ad.ad_group.id, " +
          "ad_group_ad.ad.id, " +
          "metrics.clicks, " +
          "metrics.impressions, " +
          "metrics.cost " +
  "FROM ad_group_ad " +
  "WHERE ad_group_ad.ad.type = 'RESPONSIVE_SEARCH_AD' " +
    "AND segments.date DURING LAST_7_DAYS");

while (results.hasNext()) {
  let row = results.next();
  let adId = row.adGroupAd.ad.id;
  let clicks = row.metrics.clicks;
  ...
}

Фильтрация по контенту объекта

Чтобы отфильтровать адаптивные поисковые объявления по содержанию заголовков или описаний, используйте ресурс ad_group_ad_asset_view. В этом представлении каждый заголовок и описание показываются в отдельной строке, что позволяет фильтровать текст объекта.

Следующий фрагмент кода позволяет получить статистику по всем адаптивным поисковым объявлениям, содержащим определенный заголовок:

const results = AdsApp.search(
  "SELECT ad_group_ad.ad.id, " +
          "asset.text_asset.text, " +
          "metrics.clicks, " +
          "metrics.impressions " +
  "FROM ad_group_ad_asset_view " +
  "WHERE asset.text_asset.text LIKE '%Special Offer%' " +
    "AND ad_group_ad_asset_view.field_type = 'HEADLINE'");

while (results.hasNext()) {
  let row = results.next();
  let adId = row.adGroupAd.ad.id;
  let text = row.asset.textAsset.text;
  let clicks = row.metrics.clicks;
  console.log(`Ad ID ${adId} with headline "${text}" had ${clicks} clicks.`);
}

Подробнее о том, как создавать отчеты в скриптах, рассказывается в руководстве по отчетам.