Exclusion d'emplacements automatique

Icône Outils

Parfois, des vidéos n'ont pas l'audience cible de vos annonces, mais vous ne le saurez peut-être pas tant que vous n'aurez pas commencé à générer des statistiques. Si vous constatez que les performances d'un emplacement spécifique ne sont tout simplement pas satisfaisantes, vous pouvez le supprimer de votre ciblage.

Ce script identifie et exclut automatiquement les emplacements (pas les URL YouTube) qui n'atteignent pas le seuil de vues que vous avez défini pour vos annonces vidéo.

Planification

Le script prend en compte les statistiques des sept derniers jours. Planifiez son exécution hebdomadaire (Weekly).

Fonctionnement

Pour chaque campagne de votre compte, le script exécute le même processus:

  • Trouver des statistiques sur les performances des vidéos, en particulier le taux de vue, pour la campagne en question au cours de la semaine écoulée.
  • Pour chaque URL en dessous d'un seuil spécifique de taux de vue (configurable), ajoutez une exclusion de ciblage pour cet emplacement afin d'éviter que vos annonces n'y soient diffusées.

Si le taux de vue n'est pas la statistique la plus importante pour vous, vous pouvez modifier le script afin d'utiliser un ensemble de paramètres auxquels vous accordez plus de valeur lors de l'évaluation des emplacements.

Paramètres

Le seul paramètre de ce script est VIEW_RATE_THRESHOLD. Il spécifie le pourcentage cible de fois où les utilisateurs voient l'annonce. Les emplacements inférieurs à ce seuil doivent être exclus.

Prérequis

  • Créez un script avec le code source ci-après.
  • Mettez à jour VIEW_RATE_THRESHOLD dans le code collé.
  • Examinez les critères utilisés pour déterminer quand exclure un emplacement et mettez-les à jour si nécessaire.
  • Planifiez l'exécution du script sur Weekly (Toutes les semaines).

Code source

// Copyright 2016, Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.


/**
 * @name Automatic Placement Exclusions
 *
 * @overview The Automatic Placement Exclusions script analyzes the
 *     performance of your video ads across various placements, and then
 *     automatically excludes them from appearing for URLs that have
 *     underperformed based on VideoViewRate.
 *     See
 *     https://developers.google.com/google-ads/scripts/docs/solutions/automatic-placement-exclusion
 *     for more details.
 *
 * @author Google Ads Scripts Team [adwords-scripts@googlegroups.com]
 *
 * @version 2.0
 *
 * @changelog
 * - version 2.0
 *   - Updated to use new Google Ads scripts features.
 * - version 1.0
 *   - Released initial version.
 */


// The view rate under which placements will be automatically excluded.
let VIEW_RATE_THRESHOLD = '10.00%';

// Exclude any placements that don't have at least this many impressions in the
// last 7 days to reduce noise.
const MIN_IMPRESSIONS = 50;

function main() {
  VIEW_RATE_THRESHOLD = parseFloat(VIEW_RATE_THRESHOLD);
  const results = getReportResults();
  const ids = [];
  for (const id in results) {
    ids.push(id);
  }
  const videoCampaignIterator = AdsApp.videoCampaigns()
      .withIds(ids)
      .get();
  for (const videoCampaign of videoCampaignIterator) {
    const id = videoCampaign.getId();
    if (results.hasOwnProperty(id)) {
      const urls = results[id];
      for (const url of urls) {
        videoCampaign.videoTargeting().newPlacementBuilder()
            .withUrl(url)
            .exclude();
      }
    }
  }
}

function getReportResults() {
  const query = `SELECT campaign.id, ` +
        `detail_placement_view.target_url ` +
        `FROM detail_placement_view ` +
        `WHERE metrics.impressions >= ${MIN_IMPRESSIONS} ` +
        `AND metrics.video_view_rate < ` +
        `${(VIEW_RATE_THRESHOLD / 100)} ` +
        `AND segments.date DURING LAST_7_DAYS`;
  const report = AdsApp.report(query);
  const rows = report.rows();
  const results = {};
  for (const row of rows) {
    const campaignId = row['campaign.id'];
    const url = row['detail_placement_view.target_url'];
    if (!results.hasOwnProperty(campaignId)) {
      results[campaignId] = [];
    }
    if (results[campaignId].indexOf(url) < 0) {
      results[campaignId].push(url);
    }
  }
  return results;
}