حملات الفيديو

تتيح لك نصوص "إعلانات 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" البرمجية استرداد إعلانات الفيديو باستخدام طريقة 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 video discovery
  • إعلان ملصق صغير

يمكنك اختيار هذه الحملات باستخدام withCondition:

const campaignIterator = AdsApp.videoCampaigns()
  .withCondition("AdvertisingChannelSubType = null")
  .get();

يمكن عرض "الإعلانات على الفيديو أثناء عرض الفيديو" قبل الفيديوهات الأخرى أو خلالها أو بعدها، ما يتيح للمستخدمين خيار تخطّيها بعد فترة زمنية محدّدة. تظهر "إعلانات Video discovery" على "الشبكة الإعلانية" وصفحات مختلفة على YouTube، ولن يتم تشغيلها إلا إذا نقر المستخدم بشكل نشط على الصورة المصغّرة للإعلان أولاً. تتألف "إعلانات الملصقات الصغيرة" من 6 ثوانٍ أو أقل، ويمكن أن تظهر على فيديوهات YouTube أو على فيديوهات على مواقع وتطبيقات الشركاء على "الشبكة الإعلانية". للحصول على التفاصيل الكاملة حول كل نوع من هذه الأنواع، يُرجى الاطّلاع على لمحة عن أشكال إعلانات الفيديو.

إنشاء المجموعة الإعلانية

يمكنك إنشاء مجموعة إعلانات فيديو من خلال طريقة newVideoAdGroupBuilder() في "حملة فيديو". يجب تحديد نوع مجموعة إعلانية واسم مجموعة إعلانية عند إنشاء المجموعة الإعلانية. يجب أن يكون نوع المجموعة الإعلانية أحد الأنواع التالية، ولا يمكن تغييره بعد إنشاء المجموعة الإعلانية:

  • TRUE_VIEW_IN_STREAM
  • TRUE_VIEW_IN_DISPLAY
  • BUMPER
  • VIDEO_RESPONSIVE (للحملات التي تستخدم VIDEO_ACTION فقط)
  • NON_SKIPPABLE_INSTREAM_VIDEO_AD (للحملات التي تستخدم VIDEO_NON_SKIPPABLE فقط)

مثال:

const videoAdGroup =
    videoCampaign.newVideoAdGroupBuilder()
    .withAdGroupType("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()):

مثال:

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();
}