Comment mieux gérer ses budgets journaliers - Ad's up Consulting
Fermer

Aidez-nous à préparer notre rendez-vous

    Votre nom*
    Votre prénom
    Votre adresse email*
    Votre numéro de téléphone
    Votre site internet
    Votre société*
    Projet, leviers à développer, ambitions ,objectifs, historique

    Les données saisies ci-dessus seront traitées par Ad’s up Consulting aux fins d’analyser votre demande et d’y répondre. Les champs marqués d’un * sont obligatoires. Vous disposez d’un droit d’accès, de rectification, d’effacement, d’opposition, consultez notre Politique de confidentialité ici pour en savoir plus.

    Fermer Menu
    ×
    Home / Publications / SEA / Google Ads

    Comment mieux gérer ses budgets journaliers

    En savoir plus sur notre expertise Agence Google Ads 22/11/2016 4 min. de lecture Jordan

    Aujourd’hui Ad’s up vous donne une petite astuce pour mieux gérer ses budgets AdWords grâce à un script très pratique ! Le script en question permet d’être averti directement par mail lorsque 85% du budget journalier est atteint. 85% étant le paramètre par défaut mais vous pouvez l’ajuster à votre convenance. En quoi est-ce utile ?

    Cela permet, par exemple, d’être très réactif lorsqu’une campagne rentable atteint la limite du budget alloué, vous pourrez ainsi ajuster le budget de votre campagne à la hausse et ne pas manquer de ventes potentielles.

    Les étapes d’implémentation

    1/ Pour mettre en place ce script rendez-vous dans l’onglet « opération groupées »

    2/ puis Script

    3/ Cliquez sur le bouton rouge « +SCRIPT »

    4/ Collez le script dans l’espace prévu à cet effet puis remplacez les parties en rouge par l’adresse mail de destination des mails d’alertes ainsi que le nom du client ou de l’entreprise

    5/ Cliquez sur le bouton « Autoriser maintenant » en haut de la fenêtre du script

    6/ Entrez le nom du script

    Script mail budget adwords

    7/ Enregistrez

    8/ Cliquez sur « Créer un calendrier » au niveau du nouveau script

    9/ Définissez la fréquence sur « Toutes les heures »

    fréquence-script

    10/ Et voilà, c’est terminé. Fini les problèmes de budgets !

    /****************************
    
    // Début du script
    var thresholdPercentage = <span style="color: #ff0000;">0.85</span> // Définissez ici le seuil de dépenses qui déclenche l'envoi d'un email
    var toEmail = '<span style="color: #ff0000;">[email protected]</span>'; // Indiquez l'adresse mail sur laquelle vous souhaitez recevoir les alertes
    var clientName = '<span style="color: #ff0000;">Nom du client/span>'; // Indiquez le nom du client afin que le titre du mail soit personnalisé
    function getTodaysSpend(campaign)
    {
    var stats = campaign.getStatsFor('TODAY');
    return stats.getCost();
    }
    function getTodaysStats(campaign)
    {
    var stats = campaign.getStatsFor('TODAY');
    return stats;
    }
    function main()
    {
    var account = AdWordsApp.currentAccount();
    var subject = 'Les campagnes du compte '+account.getCustomerId()+' ('+clientName+') ont atteint' + (thresholdPercentage * 100) + '% de leur budget quotidien'; // Personnalisez l'objet du mail
    var outMatrix = [];
    outMatrix.push(['Account', 'Campaign', 'Daily Budget', 'Spend so far today', 'Exhausted %', 'Impressions', 'Clicks', 'Converted Clicks', 'CPC', 'CPA' ]);
    var externalCID = account.getCustomerId();
    var campaignIterator = AdWordsApp.campaigns().get();
    var shoppingCampaignIterator = AdWordsApp.shoppingCampaigns().get();
    while (shoppingCampaignIterator.hasNext())
    {
    var campaign = shoppingCampaignIterator.next();
    var currBudget = campaign.getBudget().getAmount();
    var campaignName = campaign.getName();
    var todaysStats = getTodaysStats(campaign);
    var todaysSpend = todaysStats.getCost();
    var todaysImpressions = todaysStats.getImpressions();
    var todaysClicks = todaysStats.getClicks();
    var todaysConvertedClicks = todaysStats.getConvertedClicks();
    var todaysCPA = (todaysConvertedClicks != 0) ? (todaysSpend / todaysConvertedClicks).toFixed(2) : 'N/A';
    var todaysCPC = (todaysClicks != 0 ) ? (todaysSpend / todaysClicks).toFixed(2) : 'N/A';
    var exhaustedPercentage = (todaysSpend / currBudget).toFixed(1) + '%';
    var thresholdSpend = thresholdPercentage * currBudget;
    Logger.log('\nCampaign: '+campaign.getName()+'\nTodays Spend: '+todaysSpend+'\nThreshold Spend: '+thresholdSpend);
    if ( todaysSpend >= thresholdSpend )
    {
    outMatrix.push([ externalCID, campaignName, currBudget, todaysSpend, exhaustedPercentage, todaysImpressions, todaysClicks, todaysConvertedClicks, todaysCPC, todaysCPA ]);
    }
    }
    while (campaignIterator.hasNext())
    {
    var campaign = campaignIterator.next();
    var currBudget = campaign.getBudget().getAmount();
    var campaignName = campaign.getName();
    var todaysStats = getTodaysStats(campaign);
    var todaysSpend = todaysStats.getCost();
    var todaysImpressions = todaysStats.getImpressions();
    var todaysClicks = todaysStats.getClicks();
    var todaysConvertedClicks = todaysStats.getConvertedClicks();
    var todaysCPA = (todaysConvertedClicks != 0) ? (todaysSpend / todaysConvertedClicks).toFixed(2) : 'N/A';
    var todaysCPC = (todaysClicks != 0 ) ? (todaysSpend / todaysClicks).toFixed(2) : 'N/A';
    var exhaustedPercentage = (todaysSpend / currBudget * 100).toFixed(1) + '%';
    var thresholdSpend = thresholdPercentage * currBudget;
    if ( todaysSpend >= thresholdSpend )
    {
    outMatrix.push([ externalCID, campaignName, currBudget, todaysSpend, exhaustedPercentage, todaysImpressions, todaysClicks, todaysConvertedClicks, todaysCPC, todaysCPA ]);
    }
    }
    var csvOutput = matrixToCSV(outMatrix);
    var blobOutput = Utilities.newBlob(csvOutput);
    blobOutput.setName('campaign_stats.csv');
    MailApp.sendEmail(toEmail, subject, 'Ceci est un mail automatique.', {
    name: 'Stats Emailer',
    attachments: [blobOutput.getAs(MimeType.CSV)]
    });
    }
    function matrixToCSV(matrix)
    {
    csv = new csvWriter(',', '"');
    csvOutput = csv.arrayToCSV(matrix)
    return csvOutput;
    }
    function csvWriter(del, enc)
    {
    this.del = del || ','; // CSV Delimiter
    this.enc = enc || '"'; // CSV Enclosure
    
    // Convert Object to CSV column
    this.escapeCol = function (col) {
    if(isNaN(col)) {
    // is not boolean or numeric
    if (!col) {
    // is null or undefined
    col = '';
    } else {
    // is string or object
    col = String(col);
    if (col.length > 0) {
    // use regex to test for del, enc, \r or \n
    // if(new RegExp( '[' + this.del + this.enc + '\r\n]' ).test(col)) {
    // escape inline enclosure
    col = col.split( this.enc ).join( this.enc + this.enc );
    // wrap with enclosure
    col = this.enc + col + this.enc;
    }
    }
    }
    return col;
    };
    // Convert an Array of columns into an escaped CSV row
    this.arrayToRow = function (arr) {
    var arr2 = arr.slice(0);
    var i, ii = arr2.length;
    for(i = 0; i < ii; i++) {
    arr2[i] = this.escapeCol(arr2[i]);
    }
    return arr2.join(this.del);
    };
    // Convert a two-dimensional Array into an escaped multi-row CSV
    this.arrayToCSV = function (arr) {
    var arr2 = arr.slice(0);
    var i, ii = arr2.length;
    for(i = 0; i < ii; i++) {
    arr2[i] = this.arrayToRow(arr2[i]);
    }
    return arr2.join("\r\n");
    };
    }
    // Fin du script
    

    Pour toute problématique concernant la mise en place de scripts ou tout autre sujet lié au SEA n’hésitez pas à contacter Ad’s up !

    Jordan
    Consultant SEA