Verileri verimli bir şekilde yönetin

Birçok Google Ads uygulamasının temel işlevi, veri analizi, müşteri sorguları ve politika uyumluluk kontrolleri gibi kullanım alanları için hesap verilerini almaktır. Verileri getirirken, kullanımınızı Google sunucularında aşırı yüklenmeyecek veya hızın sınırlandırılması riskiyle karşı karşıya kalmayacak şekilde optimize etmeniz gerekir. Daha fazla bilgi için hız sınırlama ve güncel bir iletişim e-posta adresi tutma hakkındaki kılavuzları inceleyin.

Verilerinizi önbelleğe alın

Veriye her ihtiyacınız olduğunda sunucuyu çağırmak yerine, API sunucularından getirdiğiniz varlık ayrıntılarını yerel bir veritabanında önbelleğe almanız gerekir. Bu, özellikle sık erişilen veya seyrek değişen varlıklar için geçerlidir. Sonuçları en son senkronize etmenizden bu yana hangi nesnelerin değiştiğini tespit etmek için mümkün olduğunda change-event ve change-status özelliklerini kullanın.

Raporların çalıştırılma sıklığını optimize edin

Google Ads veri güncelliği ve verilerin ne sıklıkla güncellendiği ile ilgili yönergeler yayınlamıştır. Raporların ne sıklıkta getirileceğini belirlemek için bu kılavuzu kullanmanız gerekir.

Hesapları düzenli olarak güncellemeniz gerekiyorsa bu tür hesapların sayısını küçük bir grupla sınırlandırmanızı öneririz (örneğin, ilk yirmi Google Ads hesabı). Geri kalanı daha düşük sıklıkta, örneğin günde bir veya iki kez güncellenebilir.

Raporlarınızın boyutunu optimize etme

Uygulamanız çok sayıda küçük rapor çalıştırmak yerine büyük veri grupları getirir. Hesap sınırları, bu seçimde etkili olan faktörlerden biridir.

Örneğin, belirli reklam grupları için istatistikleri alan ve bir istatistik veritabanı tablosunu güncelleyen aşağıdaki kodu ele alalım:

  List<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  foreach (long adGroupId in adGroupIds)
  {
    string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
        "metrics.cost_micros, metrics.impressions, segments.date FROM " +
        "ad_group WHERE segments.date DURING LAST_7_DAYS AND " +
        "ad_group.id = ${adGroupId}";
    List<GoogleAdsRow> rows = RunGoogleAdsReport(customerId, query);
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

Bu kod, küçük bir test hesabında iyi bir şekilde çalışır. Ancak Google Ads, kampanya başına 20.000 reklam grubu ve hesap başına 10.000 kampanyayı destekler. Bu nedenle bu kod, büyük bir Google Ads hesabında çalışırsa Google Ads API sunucularını aşırı yükleyebilir ve bu da hız sınırlamasına ve kısıtlamaya neden olabilir.

Tek bir rapor çalıştırıp yerel olarak işlemek daha iyi bir yaklaşım olur. Bellek içi eşleme kullanan bu tür yaklaşımlardan biri gösterilmiştir.

  Hashset<long> adGroupIds = FetchAdGroupIdsFromLocalDatabase();

  string query = "SELECT ad_group.id, ad_group.name, metrics.clicks, " +
      "metrics.cost_micros, metrics.impressions, segments.date FROM " +
      "ad_group WHERE segments.date DURING LAST_7_DAYS";
  List<GoogleAdsRow> rows = RunGoogleAdsReport(customer_id, query);

  var memoryMap = new Dictionary<long, List<GoogleAdsRow>>();
  for each (GoogleAdsRow row in rows)
  {
    var adGroupId = row.AdGroup.Id;

    if (adGroupIds.Contains(adGroupId))
    {
      CheckAndAddRowIntoMemoryMap(row, adGroupId, memoryMap);
    }
  }
  foreach (long adGroupId in memoryMap.Keys())
  {
    InsertRowsIntoStatsTable(adGroupId, rows);
  }

Bu, çalıştırılan rapor sayısının daha düşük olması nedeniyle Google Ads API sunucularındaki yükü azaltır.

Raporun bellekte tutamayacak kadar büyük olduğunu fark ederseniz aşağıdaki gibi bir LIMIT ifadesi ekleyerek sorguyu daha küçük gruplara ayırabilirsiniz:

SELECT
  ad_group.id,
  ad_group.name,
  metrics.clicks,
  metrics.cost_micros,
  metrics.impressions,
  segments.date
FROM ad_group
WHERE segments.date DURING LAST_7_DAYS
  AND ad_group.id IN (id1, id2, ...)
LIMIT 100000

Etiketler, varlıkları gruplandırmanın ve raporlama sorgularının sayısını azaltmanın başka bir yoludur. Daha fazla bilgi edinmek için etiket kılavuzuna bakın.

Getirdiklerinizi optimize edin

Rapor çalıştırırken sorgularınıza dahil ettiğiniz sütunlara dikkat etmeniz gerekir. Her saat çalışacak şekilde planlanan aşağıdaki örneği düşünün:

SELECT
  customer.id,
  customer.currency_code,
  campaign.id,
  campaign.name,
  ad_group.id,
  ad_group.name,
  ad_group_criterion.keyword.match_type,
  ad_group_criterion.keyword.text,
  ad_group_criterion.criterion_id,
  ad_group_criterion.quality_info.creative_quality_score,
  ad_group_criterion.system_serving_status,
  ad_group_criterion.negative,
  ad_group_criterion.quality_info.quality_score,
  ad_group_criterion.quality_info.search_predicted_ctr,
  ad_group_criterion.quality_info.post_click_quality_score,
  metrics.historical_landing_page_quality_score,
  metrics.search_click_share,
  metrics.historical_creative_quality_score,
  metrics.clicks,
  metrics.impressions
FROM keyword_view
WHERE segments.date DURING LAST_7_DAYS

Yalnızca metrics.clicks ve metrics.impressions sütunları her saat değişir. Diğer tüm sütunlar seyrek güncellenir veya hiç güncellenmez. Bu nedenle, bunların saatlik olarak alınması çok verimsizdir. Bu değerleri yerel bir veritabanında depolayabilir ve değişiklikleri günde bir veya iki kez indirmek için bir change-event veya change-status raporu çalıştırabilirsiniz.

Bazı durumlarda, uygun filtreler uygulayarak indirdiğiniz satır sayısını azaltabilirsiniz.

Kullanılmayan hesapları temizleyin

Uygulamanız üçüncü taraf reklamveren hesaplarını yönetiyorsa uygulamanızı müşteri kaybını göz önünde bulundurarak geliştirmeniz gerekir. Uygulamanızı artık kullanmayan müşterilerin hesaplarını kaldırmak için işlemlerinizi ve veri depolarınızı düzenli olarak temizlemeniz gerekir. Kullanılmayan Google Ads hesaplarını temizlerken aşağıdaki yönergeleri göz önünde bulundurun:

  • Müşterinizin, hesabını yönetmesi için uygulamanıza verdiği yetkilendirmeyi iptal edin.
  • Müşterinin Google Ads hesaplarına API çağrıları yapmayı durdurun. Bu durum özellikle kullanıcı müdahalesi olmadan çalışacak şekilde tasarlanmış cron işleri ve veri ardışık düzenleri gibi çevrimdışı işler için geçerlidir.
  • Müşteri yetkilendirmesini iptal ettiyse uygulamanız bu durumu düzgün bir şekilde ele almalı ve Google'ın API sunucularına geçersiz API çağrıları göndermekten kaçınmalıdır.
  • Müşteri Google Ads hesabını iptal ettiyse hesabı algılamanız ve Google'ın API sunucularına geçersiz API çağrıları göndermekten kaçınmanız gerekir.
  • Müşterinin Google Ads hesaplarından indirdiğiniz verileri, uygun bir süre sonra yerel veritabanınızdan silin.