Скрипты Google Рекламы позволяют управлять видеокампаниями на YouTube и создавать по ним отчёты. Вы можете использовать скрипты для управления существующими видеокампаниями, создания и управления группами объявлений и объявлениями, настройки таргетинга для кампаний и создания отчётов. Однако скрипты нельзя использовать для создания видеокампаний.
Извлечение видеокампаний и групп объявлений
 Видеокампании доступны через коллекцию videoCampaigns объекта AdsApp . Вы можете получить их так же, как и обычные кампании в скриптах:
const campaignName = "My first video campaign";
const campaignIterator = AdsApp.videoCampaigns()
    .withCondition(`campaign.name = "${campaignName}"`)
    .get();
for (const campaign of campaignIterator) {
  ...
}
После извлечения кампании вы можете получить ее группы объявлений аналогичным образом:
const adGroupIterator = campaign.videoAdGroups()
    .withCondition(`ad_group.name = "${adGroupName}"`)
    .get();
for (const adGroup of adGroupIterator) {
  ...
}
 В качестве альтернативы вы можете использовать метод AdsApp.videoAdGroups() :
const adGroupIterator = AdsApp.videoAdGroups()
    .withCondition(`campaign.name = "${campaignName}" AND ad_group.name = "${adGroupName}")
    .get();
for (const adGroup of adGroupIterator) {
  ...
}
Создавайте видеорекламу
 Скрипты Google Ads позволяют получать видеорекламу с помощью метода videoAds() класса VideoAdGroup . Вы можете создавать новые видеорекламу с помощью метода newVideoAd() класса VideoAdGroup .
Форматы видеорекламы
 Поддерживаемые форматы видеорекламы различаются в зависимости от типа видеокампании. Чтобы убедиться, что вы выбрали правильный тип видеокампании, добавьте вызов withCondition к AdvertisingChannelSubType .
 В некоторых видеокампаниях есть подтипы, которые ограничивают поддерживаемые типы рекламы. В частности, кампании VIDEO_ACTION поддерживают только тип рекламы VIDEO_RESPONSIVE , а кампании VIDEO_NON_SKIPPABLE — только тип рекламы NON_SKIPPABLE_INSTREAM_VIDEO_AD .
 Лучший способ работать с определенными типами кампаний — использовать предложение withCondition в селекторе. Вы можете обновить AdvertisingChannelSubType для интересующего типа кампании:
const campaignIterator = AdsApp.videoCampaigns()
  .withCondition("AdvertisingChannelSubType = VIDEO_ACTION")
  .get();
Видеокампании без подтипа поддерживают следующие форматы видеорекламы:
- TrueView в потоке
- TrueView видео обнаружение
- Бампер
 Вы можете выбрать эти кампании с помощью withCondition :
const campaignIterator = AdsApp.videoCampaigns()
  .withCondition("AdvertisingChannelSubType = null")
  .get();
Видеореклама In-Stream может воспроизводиться до, во время или после других видео, предоставляя пользователям возможность пропустить её по истечении определённого времени. Реклама Video Discovery отображается в контекстно-медийной сети и на различных страницах YouTube и воспроизводится только в том случае, если пользователь сначала нажмёт на миниатюру объявления. Реклама-заставка длится не более 6 секунд и может появляться в видеороликах YouTube, а также на партнёрских сайтах и в приложениях в контекстно-медийной сети. Подробнее о каждом из этих типов рекламы см. в разделе «О форматах видеорекламы» .
Создайте группу объявлений
 Группа видеообъявлений создаётся с помощью метода newVideoAdGroupBuilder() видеокампании. При её создании необходимо указать тип и название группы объявлений. Тип группы объявлений должен быть одним из следующих и не может быть изменён после её создания:
-  VIDEO_BUMPER
-  VIDEO_EFFICIENT_REACH
-  VIDEO_NON_SKIPPABLE_IN_STREAM(только для кампанийVIDEO_NON_SKIPPABLE)
-  VIDEO_RESPONSIVE(только для кампанийVIDEO_ACTION)
-  VIDEO_TRUE_VIEW_IN_DISPLAY
-  VIDEO_TRUE_VIEW_IN_STREAM
-  YOUTUBE_AUDIO
Пример:
const videoAdGroup =
    videoCampaign.newVideoAdGroupBuilder()
    .withAdGroupType("VIDEO_TRUE_VIEW_IN_STREAM")
    .withName("Video Ad Group")
    .build()
    .getResult();
Создайте видеоактив
 Видеореклама обычно должна ссылаться на видеоресурс. Это определяет, какой видеоролик будет воспроизводиться в рекламе. Вы не можете загрузить видео с помощью скриптов, но можете привязать существующее видео YouTube, загруженное ранее, для использования в своей рекламе. Это делается путем создания Asset с помощью YouTubeVideoAssetBuilder .
const assetOperation = AdsApp.adAsset().newYouTubeVideoAssetBuilder()
   .withName("name")
   // This is the ID in the URL for the YouTube video.
   .withYouTubeVideoId(youTubeVideoId)
   .build();
const videoAsset = assetOperation.getResult();
Создайте рекламу
 Чтобы создать новое объявление, используйте метод конструктора, соответствующий типу группы объявлений (расположен в цепочке после newVideoAd() ):
-  inStreamAdBuilder()
-  videoDiscoveryAdBuilder()
-  bumperAdBuilder()
-  responsiveVideoAdBuilder()(только для кампанийVIDEO_ACTION)
-  nonSkippableAdBuilder()(только для кампанийVIDEO_NON_SKIPPABLE)
Например:
const videoAd = videoAdGroup.newVideoAd()
    .inStreamAdBuilder()
    .withAdName("Video Ad")
    .withFinalUrl(
        "http://www.example.com/video-ad")
    // Specify the video asset created in the last step.
    .withVideo(video)
    .build()
    .getResult();
Видеотаргетинг
 Существует два типа релевантного таргетинга для видеокампаний. VideoCampaignTargeting представляет собой любой таргетинг, применяемый на уровне аккаунта для видеокампаний в целом, и доступ к нему осуществляется с помощью AdsApp.videoCampaignTargeting() . Его нельзя изменить с помощью скриптов, но можно просмотреть.
 Другой тип таргетинга позволяет задавать критерии для видеокампаний и групп видеорекламы по отдельности. Доступ к нему осуществляется с помощью метода videoTargeting() кампании или группы объявлений. Он предоставляет доступ к селекторам и конструкторам как положительных, так и отрицательных критериев для всех типов, применимых к данному уровню таргетинга. Метод AdsApp.videoTargeting() также предназначен для просмотра критериев на уровне аккаунта и включает набор критериев, отличный от AdsApp.videoCampaignTargeting() . Как и в случае VideoCampaignTargeting , управлять этими критериями с помощью скриптов невозможно.
Вот пример исключения определенного места размещения в кампании:
videoCampaign.videoTargeting().newPlacementBuilder()
    .withUrl("http://www.example.com")
    .exclude();
 Критерии для демографических данных (возраст, пол) работают немного иначе, чем критерии других типов. При создании новой группы объявлений автоматически создаются критерии для каждого возможного значения возраста и пола, и эта группа объявлений охватывает все эти значения. Вы можете исключить демографическую группу, извлекая существующий таргетинг и вызывая для него метод exclude() . Вы также можете повторно включить исключённую демографическую группу, находя существующий таргетинг исключения и вызывая метод include() .
Вот пример исключения определенного пола из группы объявлений:
const videoGenderIterator = videoAdGroup.videoTargeting()
    .genders()
    .withCondition('GenderType = "GENDER_MALE"')
    .get();
if (videoGenderIterator.hasNext()) {
  const videoGender = videoGenderIterator.next();
  videoGender.exclude();
}