Comment mieux gérer ses budgets journaliers

Comment mieux gérer ses budgets journaliers


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;">mcc@ads-up.fr</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 !