Rapporteer campaign zonder vertoningen

Wil je zeker weten dat al je campagnes nog actief zijn? Met dit script ontvang je automatisch een mailtje op het moment dat een campagne de dag ervoor geen vertoningen heeft gegenereerd.

Start nu!
Rapporteer campaign zonder vertoningen
Rapporteer Get started!

Wanneer je meerdere accounts beheert, heb je niet altijd tijd om elke dag te controleren of al je campagnes nog actief staan. Het kan soms, om verschillende redenen, gebeuren dat campagnes tijdelijk stil vallen. Om te voorkomen dat dit pas na enkele dagen opvalt, hebben we een script gemaakt die je automatisch waarschuwt. Wanneer een campagne de dag ervoor geen vertoningen heeft gegenereerd, krijg je een mailtje op het door jou ingestelde emailadres.

Instellingen

In het config-gedeelte van het script, kan je meerdere waarden aanpassen naar wens.

  • LOG: Geef aan of het script de tussenstappen moet rapporteren, door de waarde aan te passen naar 'true'.
  • EMAIL: Vul hier het emailadres in waar je de melding op wilt ontvangen. Je kan meerdere emailadressen invullen, door ze te scheidden met een komma.
  • EMAIL_INTRO: Dit is de boodschap die bovenaan de email staat. Deze kan je aanpassen naar wens.
  • EMAIL_SUBJECT: Het onderwerp van de email.
  • DATE_RANGE: Geef aan over welke periode je wilt controleren of de campagnes vertoningen hebben ontvangen.
  • COMPARE: Zet op 'true' wanneer je wilt controleren of de campagnes in een periode daarvoor wel vertoningen hebben gehad.
  • COMPARE_DATERANGE: Wanneer COMPARE op true staat, bepaal je hier de periode waarover je wilt vergelijken.
  • ACCOUNT_LABEL: Label de accounts waar dit script doorheen moet lopen.

MCC niveau

Onderstaand script kan gebruikt worden op MCC-niveau, zodat je in 1 email een overzicht hebt van campagnes dit stil liggen. Bij de accountSelector filter ik alle accounts die het label 'Active' krijgen in je MCC. Als je dit niet wilt, kan je regel 30 verwijderen uit het script. 

Frequentie: Draai dit script 1x per dag, bij voorkeur aan het einde van de ochtend.

The script
// Copyright 2019. Increase BV. All Rights Reserved.
// Not to be used without permission of the creator or Increase B.V.
//
// Created By: Tibbe van Asten
// for Increase B.V.
// 
// Created: 23-08-2018
// Last update: 10-07-2019
//
// ABOUT THE SCRIPT
// With this script you keep track of impressions in campaigns.
// When a campaign didn't receive any impressions yesterday,
// the script will send an email.
//
////////////////////////////////////////////////////////////////////

var config = {
  
  LOG : true,
  
  EMAIL : "yourem@il.com",
  EMAIL_INTRO : "The following campaigns have no impressions today!<br />",
  EMAIL_SUBJECT : "WARNING: Campaigns without impressions",
  
  DATE_RANGE : "TODAY",
  COMPARE : true,
  COMPARE_DATERANGE : "LAST_7_DAYS",
  ACCOUNT_LABEL : "Active"
  
}

////////////////////////////////////////////////////////////////////

function main() {
  
  var emailContent = config.EMAIL_INTRO;
  
  var accountIterator = MccApp
  	.accounts()
  	.withCondition("LabelNames CONTAINS '" + config.ACCOUNT_LABEL + "'")
  	.get();
  
  while(accountIterator.hasNext()){
    var account = accountIterator.next();
    MccApp.select(account);

    var campaignIterator = AdsApp
    	.campaigns()
    	.withCondition("Status = ENABLED")
    	.withCondition("Impressions = 0")
    	.withCondition("CampaignExperimentType = BASE")
    	.withCondition("ServingStatus = SERVING")
    	.forDateRange("TODAY")
    	.get();
    
    	  //Add accountname as heading in email
        if(campaignIterator.hasNext()){
          emailContent += "<br /><b>" + account.getName() + "</b><br />";
          
          if(config.LOG === true){
            Logger.log("Account: " + account.getName());
          }
        }
    
    while(campaignIterator.hasNext()){
      var campaign = campaignIterator.next(); 
      
      // Only add campaigns with > 0 impressions previous period
      if(config.COMPARE === true){
        
        // Check for impressions previous period
        if(campaign.getStatsFor(config.COMPARE_DATERANGE).getImpressions() > 0){
          
          if(config.LOG === true){
            Logger.log("Campaign: " + campaign.getName());
          }
          
          emailContent += campaign.getName() + "<br />";
          
        }
        
      } // compare with previous period
      else {
        
        if(config.LOG === true){
          Logger.log("Campaign: " + campaign.getName());
        }
      
        emailContent += campaign.getName() + "<br />";
        
      } 
      
    } // campaignIterator    
    
    var shoppingCampaignIterator = AdsApp
      .shoppingCampaigns()
      .withCondition("Status = ENABLED")
      .withCondition("Impressions = 0")
      .withCondition("CampaignExperimentType = BASE")
      .withCondition("ServingStatus = SERVING")
      .forDateRange("TODAY")
      .get();
    
    //Add accountname as heading in email
    if(shoppingCampaignIterator.hasNext() && !campaignIterator.hasNext()){
      emailContent += "<br /><b>" + account.getName() + "</b><br />";
      
      if(config.LOG === true){
        Logger.log("Account: " + account.getName());
      }
    }
    
    while(shoppingCampaignIterator.hasNext()){
      var campaign = shoppingCampaignIterator.next();      

      // Only add campaigns with > 0 impressions previous period
      if(config.COMPARE === true){
        
        // Check for impressions previous period
        if(campaign.getStatsFor(config.COMPARE_DATERANGE).getImpressions() > 0){
          
          if(config.LOG === true){
            Logger.log("Campaign: " + campaign.getName());
          }
          
          emailContent += campaign.getName() + "<br />";
          
        }
        
      } // compare with previous period
      else {
        
        if(config.LOG === true){
          Logger.log("Campaign: " + campaign.getName());
        }
      
        emailContent += campaign.getName() + "<br />";
        
      } 
      
    } // shoppingCampaignIterator    
    
    if(config.LOG === true){
      Logger.log("----");
    }
    
  } // accountIterator
  
  sendEmail(emailContent);
  Logger.log(emailContent);
  
} // function main

////////////////////////////////////////////////////////////////////

function sendEmail(emailContent) {
  
  MailApp.sendEmail({
    to: config.EMAIL,
    subject: config.EMAIL_SUBJECT,
    htmlBody: emailContent});
  
} // function sendEmail
Show whole script!
The Experts
Tibbe van Asten Head of PPC @ Increase
Nils Rooijmans Water Cooler Topics
Martijn Kraan Freelance PPC Specialist
Bas Baudoin Teamlead SEA @ Happy Leads
How about you? JOIN US!
Sharing Knowledge
Caring

Kennis delen

Adsscripts.com staat voor het delen van kennis. In de huidige markt houden SEA-specialisten de kennis en ervaring graag voor zich. Wij zijn er van overtuigd dat het delen van kennis ervoor kan zorgen dat iedereen beter wordt in haar of zijn werk. Daarom lopen wij hier graag in voorop, door onze kennis over scripts te delen met iedereen.

Wil jij ook graag een bijdrage leveren? Wij staan open voor nieuwe ideeën en feedback op alles wat je op Adsscripts.com vindt.

Neem contact op

Training &
Workshop
Neem contact op!
Adsscripts Training & Workshop