Vyberte stránku

Google Ads skript pro kontrolu rozpočtu

Google Ads skript pro kontrolu rozpočtu

Znáte to, když vám klient řekne, že si přeje měsíčně utratit za kampaně pouze X Kč? Jak to pohlídat a moc se u toho nezapotit? Vyzkoušejte tento skript na hlídání rozpočtu pro Google Ads!

Skripty pro Google Ads jsem začala psát asi ve stejnou dobu, kdy jsem pronikla do tajů samotného systému. Rozhodla jsem se s vámi sdílet jeden z těch prvních, které jsem napsala, a také jeden z nejužitečnějších, neboť s jeho výstupem pracuji každý den.

Představte si situaci, kdy vám klient stanoví maximální rozpočet, který je ochotný za reklamu utratit. U menších klientů jde o běžnou situaci. V takovém případě máte možnost nastavit maximální denní rozpočet například pomocí sdíleného rozpočtu na přesnou denní proporci měsíčního rozpočtu, ale tento přístup nebere v potaz peníze ušetřené např. o víkendu, kdy objem hledání upadá, a maximální měsíční rozpočet tak nebude vyčerpán. Rovněž se chceme vyhnout také přečerpání rozpočtu při volnějším nastavení rozpočtů.

Úkolem tohoto skriptu, kterému říkám Spend Check, je informovat vás skrze email jak upravit současný denní rozpočet, ať už navýšit či snížit, aby byl maximální rozpočet  do konce měsíce využit. Pro správný běh je potřeba vyplnit tři parametry, které se nacházejí na začátku skriptu:

  1. maxspendpermonth – maximální rozpočet, který je možné v daném měsíci utratit
  2. email – emailová adresa, na kterou budou chodit výsledky skriptu
  3. subject – předmět emailu, kde je dobré uvést i název účtu/klienta

Nastavte denní spouštění skriptu. Já osobně ho spouštím v noci v 5 hodin, abych hned ráno mohla udělat případné úpravy rozpočtů, a zároveň v takovou hodinu už by měla být data za předchozí den kompletní.

Pokud vám denní maily přijdou otravné, můžete odstranit komentář u řádku č. 75 a 77 a budou vám chodit pouze v druhé půlce měsíce v případě, kdy dojde k potencionálnímu přečerpání rozpočtu na konci měsíce a denní rozpočet je tedy nyní potřeba snížit.

Při každodenní optimalizaci kampaní je nejdůležitější poslední řádek emailu “Upravit denní rozpočet o:”, který informuje, jakou úpravu je potřeba s denními rozpočty provést:

  • vidíte-li červené číslo se znaménkem mínus, je potřeba denní útratu snížit
  • je-li tam zelené číslo, denní rozpočet o příslušnou částku navyšte

Ostatní metriky slouží pro pochopení průběhu utrácení rozpočtu a jsou vám tak k dispozici při zásadnějších změnách v rozpočtech kampaní. Hodí se například odhad měsíčního rozpočtu při aktuální útratě, kdy můžete klientovi navrhnout, zda by stanovený rozpočet nezvýšil.

Skript je poměrně jednoduchý a určitě jej lze dále upravovat a zlepšovat, každopádně svůj úkol plní a šetří mi spoustu času. Pokud ho budete chtít adaptovat na vaše konkrétní potřeby, můžete se na mě obrátit.

Staráte-li se o více účtů, bude se vám hodit MCC verze skriptu a pokud se věnujete i Skliku, koukněte na verzi skriptu pro Sklik.

Výsledky skriptu

Zdrojový kód skriptu

/******************************************
* Spend Check - Google Ads
* Script checks the cost of an entire account and informs you via email about daily budget adjustment needed to be done in the account in order to meet the maximum monthly spend
* Run the script every day
* Created By: Hana Kobzová
* HanaKobzova.cz
******************************************/

  var maxspendpermonth = 10000;  
  var email = "email@email.com";
  var subject = "Google Ads - Spend Check - Název účtu"

function main() {
  var date = new Date(Utilities.formatDate(new Date(), 
      AdsApp.currentAccount().getTimeZone(), "MMM dd,yyyy HH:mm:ss"));
  var day = date.getDate()-1;
  var month = date.getMonth()+1;
  var year = date.getYear();
  var daysmonth = new Date(year, month, 0).getDate();
  var daysleft = daysmonth - day; 
  

  var realcostuntiltoday =  AdsApp.currentAccount().getStatsFor("THIS_MONTH").getCost() - AdsApp.currentAccount().getStatsFor("TODAY").getCost();
  var costyesterday = AdsApp.currentAccount().getStatsFor("YESTERDAY").getCost();
  
  var maxspendperday = maxspendpermonth/daysmonth;
  var costrest = maxspendpermonth - realcostuntiltoday;
  var colorcostrest = "black";
  if (costrest > (maxspendpermonth*0,2)){colorcostrest = "green"} else {colorcostrest = "red"};
  
  var tendency = maxspendpermonth - (realcostuntiltoday/day*daysmonth);
  var colortendency = "black";
  if (tendency >0){colortendency = "green"} else {colortendency = "red"};
 
  var dailycostreal = realcostuntiltoday/day;
  var tendencytotal = dailycostreal * daysmonth;
  var dailycostdesired = maxspendpermonth/daysmonth;
  
  var corrector = dailycostdesired - dailycostreal;
  var colorcorrector = "black";
  if (corrector>0){colorcorrector = "green"} else {colorcorrector = "red"};
  
  var dailycostdesiredyesterday = costrest/daysleft;
  var tendencytotalyesterday = realcostuntiltoday + (costyesterday * daysleft); 
  var tendencyyesterday = maxspendpermonth - tendencytotalyesterday ; 
  var correctoryesterday = dailycostdesiredyesterday - costyesterday; 
  correctoryesterday = correctoryesterday.toFixed(0);
  var colortendencyyesterday = "black";
  if (tendencyyesterday>0){colortendencyyesterday = "green"}else{colortendencyyesterday = "red"};
  var colorcorrectoryesterday = "black";
  if (correctoryesterday>0){colorcorrectoryesterday = "green";} else {colorcorrectoryesterday = "red";}
  if (costrest<0){correctoryesterday = "příliš pozdě, měsíční rozpočet byl přečerpán"};
  
  //Email
  var html = [];
  html.push(
   "<html>",
    "<body>", 
     "<p>" + subject.toUpperCase() + "</p>",
     "<p>-------------</p>",
     "<p>TENTO MĚSÍC (1"+"."+month+"."+year+"-"+day+"."+month+"."+year+")</p>",
     "<p>Stanovený měsíční rozpočet: ", maxspendpermonth.toFixed(0) ,"</p>",
     "<p>Průměrný denní rozpočet: ", maxspendperday.toFixed(0) ,"</p>",
     "<p>Utraceno tento měsíc: ", realcostuntiltoday.toFixed(0) ,"</p>",
     "<p>Z rozpočtu zbývá do konce měsíce: <span style='color: " + colorcostrest + "'> " +  costrest.toFixed(0), "</span></p>",
     "<p>-------------</p>",
     "<p>VČERA ("+day+"."+month+"."+year+")</p>",
     "<p>Utraceno včera: ", costyesterday.toFixed(0) ,"</p>",
     "<p>Optimální denní rozpočet do konce měsíce: ", dailycostdesiredyesterday.toFixed(0) ,"</p>",
     "<p>Tendence při současném nastavení: <span style='color: " + colortendencyyesterday + "'> " +  tendencyyesterday.toFixed(0) + " (" + tendencytotalyesterday.toFixed(0) +")</span></p>",
     "<p>Upravit denní rozpočet o: <span style='color: " + colorcorrectoryesterday + "'> " + correctoryesterday + "</span></p>", 
    "</body>",
   "</html>");
 
  //if ((day > 15) && (correctoryesterday > 0) ) { //odeslat email pouze od 15. dne v měsíci a pokud utrácíme více, než by se mělo
  MailApp.sendEmail(email, subject, "", {htmlBody: html.join("\n")});
 // }
}

První verze skriptu zde byla zveřejněna 24.1.2016.

Jsem online marketérka na volné noze. Specializuji se na PPC reklamu v Google Ads a Sklik. Baví mě přemýšlet nad efektivitou mé práce, proto často objevím nějaký trik či vychytávku, jak zefektivnit práci na PPC kampaních nebo si sem tam naprogramuji užitečný skript, aby mi šla práce lépe od ruky. Hledáte PPC specialistu? Zjistěte o mě více nebo mi rovnou napište!

6 Komentáře(ů)

  1. DVK

    Je li to prosím možně nějak v tom scriptu nastavit aby on nejen upozorňoval by emailem ale i sám prováděl potřebné změny v rozpočtech když jde o změnách do nějakého procentu od současného rozpočtu.
    Například když potřeba zvyšovat/snižovat rozpočet méně než o 10% od současné částky – tak by provedl to sám skript a jen by mne o tom oznámil emailem, když vice než o 10% tak jenom by o tom oznámil a nechal by řešeni na mne.

    Odpovìdìt
    • Hana Kobzová

      Dobrý den, děkuji za zprávu. Technicky by to neměl být problém, ale vyvstává zde otázka, kde rozpočet přidat/ubrat a s jakými váhami. Většina účtů obsahuje více než 1 kampaň. Jak byste si takovou úpravu u více kampaní představoval?

      Odpovìdìt
  2. Jiří Jasenský

    Skvělý pomocník. Jen mám dotaz, ten script počítá s rozpočtem pro všechny kampaně v účtu. Je možné nastavit daný rozpočet pouze pro vybrané kampaně?

    Odpovìdìt
    • Hana Kobzová

      Bohužel v současné podobě to není možné. Účelem skriptu je, aby kontroloval účet jako celek napříč všemi účty. Vůbec se v něm s úrovní kampaní nepracuje.

      Odpovìdìt
  3. Karolína

    Dobrý den, lze vytvořit nějaký script, který mně upozorní, že v účtu není kredit? Bohužel se u klientů stává, že dojde a pak chvíli trvá, že není dobito. Děkuji

    Odpovìdìt
    • Hana Kobzová

      Zdravím, bohužel přes skripty není možné pracovat s výší prostředků na účtu, ale já k tomu používám emailovou notifikaci, která přijde, když má účet za včerejší den útratu 0 Kč. Může tam dojít ke zpoždění, např. vyčerpá-li účet prostředky před polednem, notifikaci dostanete až vlastně třetí den, ale je to lepší než nic 😉 Když tak se mi ozvěte přes kontaktní formulář.

      Odpovìdìt

Vložit komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *