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
7/ Enregistrez
8/ Cliquez sur « Créer un calendrier » au niveau du nouveau script
9/ Définissez la fréquence sur « Toutes les heures »
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 !