Kategóriák
Google Ads Scripts a gyakorlatban

Budget kontroller script

A napokban jött ki egy olyan változtatás a Google részéről, amivel jóval nagyobb teret engednek a napi túlköltésnek. 20%-ot eddig is túlkölthettek a kampányok, viszont most ez az érték meg lett emelve 100%-ra. Bár van egy olyan limit, hogy havi periódusban tartania kell a rendszernek a napi költési limitet, bizonyos esetekben mégis nehézséget okoz, hogy az AdWords jóval tágabban értelmezi a napi költési limitet. A funkciót kikapcsolni nem lehet, a korábbi 20%-os limitre sem lehet visszaállni, viszont a következő script megoldást nyújt a napi büdzsé kezelésére.

A scriptet óránkénti futással kell beállítanunk. Minden órában megnézi a script, hogy adott kampánynál elköltöttük-e már a napi költéskeretet. Ha igen, akkor leállítja és egy Stop labelt helyez a kampányra. Éjfél és 1 óra közötti futásnál pedig újraindítja a leállított kampányokat és leveszi a Stop labelt. Majd indul az egész folyamat előről.

Mit kell tenni, hogy a scriptet futtatni tudd? Csak másold be az alábbi scriptet a fiókodba óránkénti ütemezéssel, illetve kampányszinten hozz létre egy “Stop” labelt.

function main() {
 
  var date = new Date(new Date().getTime()).toString();
 
  if (date.indexOf(" 15:") > 0) {
 
    var campaignIterator = AdWordsApp.campaigns().withCondition("LabelNames CONTAINS_ANY ['Stop']").get();
 
    while (campaignIterator.hasNext()) {
 
      var campaign = campaignIterator.next();
 
      campaign.enable();
      campaign.removeLabel("Stop");
 
    }
 
  } 
 
  else { 
 
    var campaignIterator = AdWordsApp.campaigns().withCondition("LabelNames CONTAINS_NONE ['Stop']").get();
 
    while (campaignIterator.hasNext()) {
 
      var campaign = campaignIterator.next();
 
      var campaignName = campaign.getName();
      var budget = campaign.getBudget().getAmount();
 
      var report = AdWordsApp.report(
        "SELECT Cost " +
        "FROM CAMPAIGN_PERFORMANCE_REPORT " +
        "WHERE CampaignName CONTAINS " + "'" +campaignName+ "' " +
        "DURING TODAY");
 
      var rows = report.rows();
      while (rows.hasNext()) {
 
        var row = rows.next();
        var cost = row['Cost'];
 
      }
 
      if (cost > budget) {
 
        campaign.pause();
        campaign.applyLabel("Stop");
      
      } 
 
    }
 
  }
 
}