Google Ads Düşük Kalite Puanı Uyarı Komut Dosyası

G

Birden fazla reklam hesabı yönetiyorsanız ve çok sayda anahtar kelimeniz varsa, anahtar kelimelerin kalite puanlarını takip etmek zamanla zorlaşabiliyor. Düşük Kalite Puanlı anahtar kelimeler paranızı boşa harcıyorsa ve bunları takip etmekte zorlanıyorsanız bu komut dosyası sorunu doğrudan çözmek için size büyük avantaj sağlayacak.

Kalite puanı, reklamınızın Google arama sayfasında sayfanın neresinde gösterilmesine ve tıklama başına ne kadar ücret ödeyeceğinizin belirlenmesinde önemli bir faktördür. Kalite puanı düşük anahtar kelimelere yüksek ücretler ödemek istemeyiz, bu kelimeleri direk reklam gruplarımızdan çıkarmak isteyebiliriz yada açılış sayfamızı anahtar kelimeye göre optimize etmek isteyebiliriz bu nedenle bunu mümkün olan en kısa sürede düzeltmek isteriz.

Kalite Puanı Komut Dosyası Nasıl Çalışır

Bu komut dosyası, düşük Kalite Puanlı anahtar kelimeleri düzeltilmesi için bize otomasyon sağlar. Tek yapmanız gereken Kalite Puanı eşiği belirlemektir ve komut dosyası, puanları bu değere eşit veya daha düşük olan anahtar kelimelerin nerede olduğunu size e-posta ile gönderir, böylece anında müdahalede bulunabiliriz.

Ayrıca, daha kolay bulunabilmeleri için anahtar kelimeleri etiketleyebilir. Sıfır tolerans politikanız varsa, anahtar kelimeleri sizin için duraklatabilir (duraklatma işlemini kullanacaksanız kalite puanı eşiğinizin çok yüksek olmadığına dikkat edin).

Her şeyin doğru çalışıp çalışmadığını kontrol etmek için bir test çalıştırması yaptıktan sonra, komut dosyasının Kalite Puanlarınızı sizin için ne sıklıkla kontrol etmesini istediğinize bağlı olarak düzenli bir program ayarlamanızı öneririm.

Komut Dosyasını Nasıl Kullanırız

Google Ads paneli üzerinden Araçlar ve Ayarlar penceresinden Komut Dosyaları sayfasını açıyoruz.

Yeni bir tane komut oluşturmak için büyük “+” düğmesini tıklayın ve aşağıdaki komut dosyasını buraya yapıştırın, görselde belirtilen yerleri mutlaka kendinize göre doldurun.

Ardından aşağıdaki komut dosyası içindeki seçenekleri düzenleyin:

  1. EMAIL_ADDRESSES : Düşük kalite puanlı anahtar kelimelerinin listesinin gönderileceği E-posta adres veya adresleri girin
  2. QS_THRESHOLD : Kalite puanı bu sayıdan az veya ona eşit olan anahtar kelimeler
  3. LABEL_KEYWORDS : Bu ‘true’ ise, düşük kalite puanlı anahtar kelimeler otomatik olarak etiketlenecektir
  4. LOW_QS_LABEL_NAME : Düşük kalite puanlı anahtar kelimelerine uygulanan etiketin adı
  5. PAUSE_KEYWORDS : Bu ‘true’ ise, düşük kalite puanlı anahtar kelimeler otomatik olarak duraklatılacaktır. Aktif kalmalarını istiyorsanız ‘false’ olarak ayarlayın.
// ID: 61daad0e8fb8188eb2257bc8ee01bc5b
/**
 *
 *  Düşük Kalite Puanı Uyarısı
 *
 * Bu komut dosyası, düşük kalite puanlı anahtar kelimeleri bulur (kullanıcı tanımlı bir eşikle belirlenir)
 * ve bunları listeleyen bir e-posta gönderir. İsteğe bağlı olarak ayrıca etiketler ve / veya duraklatır.
 * 
 *
 *
 **/


//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//Ayarlar

var EMAIL_ADDRESSES = ["degisecek@mailhesabi.com", "degisecek2@mailhesabı.com"];
// Düşük kalite puanlı anahtar kelimelerinin listesinin gönderileceği E-posta adres veya adresleri girin
// örn ["deneme@example.com", "ali@example.com.tr"] yada ["ayse@example.org"]

var QS_THRESHOLD = 3;
// Kalite puanı bu sayıdan az veya ona eşit olan anahtar kelimeler

var LABEL_KEYWORDS = true;
// Bu true ise, düşük kalite puanlı anahtar kelimeler otomatik olarak etiketlenecektir

var LOW_QS_LABEL_NAME = "Dusuk Kalite Puanı";
// Düşük kalite puanlı anahtar kelimelerine uygulanan etiketin adı

var PAUSE_KEYWORDS = false;
// Bu true ise, düşük kalite puanlı anahtar kelimeler otomatik olarak duraklatılacaktır
// Aktif kalmalarını istiyorsanız 'false' olarak ayarlayın.



//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//
// Functions

function main() {
  Logger.log("Pause Keywords: " + PAUSE_KEYWORDS);
  Logger.log("Label Keywords: " + LABEL_KEYWORDS);

  var keywords = findKeywordsWithQSBelow(QS_THRESHOLD);
  Logger.log("Found " + keywords.length + " keywords with low quality score");

  if (!labelExists(LOW_QS_LABEL_NAME)) {
    Logger.log(Utilities.formatString('Creating label: "%s"', LOW_QS_LABEL_NAME));
    AdWordsApp.createLabel(LOW_QS_LABEL_NAME, 'Automatically created by QS Alert', 'red');
  }

  var mutations = [
    {
      enabled: PAUSE_KEYWORDS,
      callback: function (keyword) {
        keyword.pause();
      }
    },
    {
      enabled: LABEL_KEYWORDS,
      callback: function (keyword, currentLabels) {
        if (currentLabels.indexOf(LOW_QS_LABEL_NAME) === -1) {
          keyword.applyLabel(LOW_QS_LABEL_NAME);
        }
      }
    }
  ];

  var chunkSize = 10000;
  var chunkedKeywords = chunkList(keywords, chunkSize);

  Logger.log("Making changes to keywords..");
  chunkedKeywords.forEach(function (keywordChunk) {
    mutateKeywords(keywordChunk, mutations);
  });

  if (keywords.length > 0) {
    sendEmail(keywords);
    Logger.log("Email sent.");
  } else {
    Logger.log("No email to send.");
  }
}

function findKeywordsWithQSBelow(threshold) {
  var query = 'SELECT Id, AdGroupId, CampaignName, AdGroupName, Criteria, QualityScore, Labels'
    + ' FROM KEYWORDS_PERFORMANCE_REPORT WHERE Status = "ENABLED" AND CampaignStatus = "ENABLED" AND AdGroupStatus = "ENABLED"'
    + ' AND HasQualityScore = "TRUE" AND QualityScore <= ' + threshold;
  var report = AdWordsApp.report(query);
  var rows = report.rows();

  var lowQSKeywords = [];
  while (rows.hasNext()) {
    var row = rows.next();
    var lowQSKeyword = {
      campaignName: row['CampaignName'],
      adGroupName: row['AdGroupName'],
      keywordText: row['Criteria'],
      labels: (row['Labels'].trim() === '--') ? [] : JSON.parse(row['Labels']),
      uniqueId: [row['AdGroupId'], row['Id']],
      qualityScore: row['QualityScore']
    };
    lowQSKeywords.push(lowQSKeyword);
  }
  return lowQSKeywords;
}

function labelExists(labelName) {
  var condition = Utilities.formatString('LabelName = "%s"', labelName);
  return AdWordsApp.labels().withCondition(condition).get().hasNext();
}

function chunkList(list, chunkSize) {
  var chunks = [];
  for (var i = 0; i < list.length; i += chunkSize) {
    chunks.push(list.slice(i, i + chunkSize));
  }
  return chunks;
}

function mutateKeywords(keywords, mutations) {
  var keywordIds = keywords.map(function (keyword) {
    return keyword['uniqueId'];
  });

  var mutationsToApply = getMutationsToApply(mutations);
  var adwordsKeywords = AdWordsApp.keywords().withIds(keywordIds).get();

  var i = 0;
  while (adwordsKeywords.hasNext()) {
    var currentKeywordLabels = keywords[i]['labels'];
    var adwordsKeyword = adwordsKeywords.next();

    mutationsToApply.forEach(function (mutate) {
      mutate(adwordsKeyword, currentKeywordLabels);
    });
    i++;
  }
}

function getMutationsToApply(mutations) {
  var enabledMutations = mutations.filter(function (mutation) {
    return mutation['enabled'];
  });

  return enabledMutations.map(function (condition) {
    return condition['callback'];
  });
}

function sendEmail(keywords) {
  var subject = "Low Quality Keywords Paused";
  var htmlBody =
    "<p>Keywords with a quality score of less than " + QS_THRESHOLD + "found.<p>"
    + "<p>Actions Taken:<p>"
    + "<ul>"
    + "<li><b>Paused</b>: " + PAUSE_KEYWORDS + "</li>"
    + "<li><b>Labelled</b> with <code>" + LOW_QS_LABEL_NAME + "</code>: " + LABEL_KEYWORDS + "</li>"
    + "</ul>"
    + renderTable(keywords);

  MailApp.sendEmail({
    to: EMAIL_ADDRESSES.join(","),
    subject: subject,
    htmlBody: htmlBody
  });
}

function renderTable(keywords) {
  var header = '<table border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides">'
    + '<thead><tr>'
    + '<th>Campaign Name</th>'
    + '<th>Ad Group Name</th>'
    + '<th>Keyword Text</th>'
    + '<th>Quality Score</th>'
    + '</tr></thead><tbody>';

  var rows = keywords.reduce(function (accumulator, keyword) {
    return accumulator
      + '<tr><td>' + [
        keyword['campaignName'],
        keyword['adGroupName'],
        keyword['keywordText'],
        keyword['qualityScore']
      ].join('</td><td>')
      + '</td></tr>';
  }, "");

  var footer = '</tbody></table>';

  var table = header + rows + footer;
  return table;
}

Komut Dosyanızın çalıştığından emin olmak için Önizleme butonundan kontrol edin!

Kanak: https://www.brainlabsdigital.com/marketing-library/low-quality-score-alert-script/

Yazar hakkında

Yorum Ekle

Kategoriler

Son Yazılar

360° Dijital Pazarlama

Reklam stratejileri markaların ihtiyaçlarını ve pazar koşullarını karşılamak için tamamen analitik yöntemler, rakip analizleri, testler ve optimizasyon süreçleri ile tasarlanır.

Dijital dönüşümü çok yakından takip ediyor, Dijital dünyada var olmak isteyen markalara destek veriyorum.