Google Ads Script’leri Smart Bidding, Performance Max veya insan account strategy’sinin yerine geçmez. En güçlü kullanım alanları daha dardır ve daha değerlidir: monitoring, QA, export, anomaly check, URL kontrolü, search-term review ve built-in automation’ın yeterince net göstermediği reporting akışları.
Bu yazıda ne öğreneceksiniz
- Otomasyon yoğun Google Ads hesaplarında script’lerin hâlâ nerede işe yaradığını.
- Hangi monitoring işlerinin hesap değişikliği yapan otomasyondan daha güvenli şekilde script ile kurulabileceğini.
- Starter script’leri DRY_RUN, QA notları ve temel rollback mantığıyla nasıl devreye alacağınızı.
- Ne zaman script, ne zaman API job, ne zaman manuel audit gerektiğini.
Otomasyonlu hesaplarda Google Ads Script’leri neden hâlâ önemlidir?
Otomasyon mevcut kurallar ve gördüğü sinyaller içinde optimize eder. Script’ler ise farklı bir katmanda çalışır: blind-spot monitoring, export, alerting ve yapısal QA.
Bu nedenle en güçlü script kullanım alanları çoğu zaman read-only işlerdir. Amaç; bütçe, teklif veya campaign state’i otomatik değiştirmek değil, insanın problemi daha hızlı görmesini sağlamaktır.
Script’ler güvenli şekilde ne yapabilir, ne yapamaz?
Script’ler şu işlerde uygundur:
- reporting export,
- budget alert,
- search-term review,
- final URL check,
- PMax ve AI Max QA desteği,
- anomaly detection,
- spreadsheet logging.
Script’ler şu işler için en güvenli ilk araç değildir:
- bulk bid change,
- otomatik budget shift,
- campaign pause,
- insan kontrolü olmadan negative keyword ekleme,
- asset deletion,
- dry-run ve rollback mantığı olmayan account-wide mutation.
Her script kurulumundan önce: izinler, DRY_RUN ve QA
Mümkünse önce hesabın kopyasında veya dar scope’lu campaign setinde başlayın. Script’i read-only varsayımıyla kurun. Eğer script Google Sheets’e yazıyor veya email gönderiyorsa schedule etmeden önce output formatını doğrulayın.
Önce DRY_RUN
Bir script herhangi bir değişiklik yapabilecekse `DRY_RUN = true` ile başlayın. Bu yazıdaki starter script’ler read-only veya export-only kurgudadır; yazma davranışı varsa log veya Sheets çıktısıyla sınırlıdır.
Yalnızca güvenli placeholder kullanın
`YOUR_SPREADSHEET_URL` ve `ALERT_EMAIL@invalid.local` gibi placeholder kullanın. Gerçek customer ID, secret veya canlı bildirim adresini review etmeden paylaşılmış koda koymayın.
Script özet tablosu
| Script | Yakaladığı sorun | Ana veri kaynağı | Output | Güvenli varsayılan | Önerilen cadence |
|---|---|---|---|---|---|
| Budget Burn Alert | Campaign’lerin günlük bütçeye göre hızlı harcaması | Campaign stats | Logger veya email summary | Read-only | Günlük |
| Search Term N-Gram Waste Miner | Search term içinde tekrar eden waste pattern’leri | Search terms report | Google Sheets veya Logger satırları | Read-only | Haftalık |
| Broken Final URL Checker | Hata veya riskli redirect dönen landing page’ler | Final URLs + UrlFetchApp | Error list | Read-only | Günlük |
| Zombie Product veya Low-Activity Item Hunter | Spend var ama activity zayıf item’ler | Shopping performance view | Sheet veya log satırları | Read-only | Haftalık |
| Auction Pressure Monitor | Impression-share loss ve auction pressure değişimleri | Campaign metrics | Alert summary | Read-only | Haftalık |
| Conversion Action Sanity Reporter | Stale, duplicate veya yanlış kurgulanmış conversion action’lar | Conversion action metadata | Review list | Read-only | Haftalık |
| Performance Max Asset ve Feed Coverage Reporter | PMax coverage boşlukları | PMax campaign ve asset/feed checks | Coverage review list | Starter template | Haftalık |
| AI Max Final URL ve Tracking-Template Risk Checker | URL expansion veya tracking-template uyumsuzluğu riski | Campaign URL settings | Risk list | Starter template | Haftalık |
| Spend Pacing ve Anomaly Alert | Ani cost spike veya pacing sapması | Campaign stats | Alert summary | Read-only | Günlük |
| Reporting Export to Google Sheets | Tekrarlayan manuel reporting işi | Campaign metrics ve spreadsheet export | Structured sheet tab | Export-only | Günlük veya haftalık |
Dashboard template’leri ve setup notlarıyla birlikte tam script pack’i mi istiyorsunuz? Google Ads script pack’i talep edin ya da account systems audit alın; hesabınıza uygun monitoring katmanını birlikte kuralım.
Script guvenligi ve test tablosu
| Risk area | Ne ters gidebilir | Güvenli kurulum kuralı | QA check | Rollback veya stop condition |
|---|---|---|---|---|
| Permissions | Script gereğinden fazla şeyi görür | Önce tek hesap veya dar scope ile başla | Seçilen entity setini kontrol et | Scope beklenenden genişse durdur |
| DRY_RUN | Script review olmadan yazar | Read-only veya DRY_RUN varsayılanı kullan | Log’u canlı yazımdan önce incele | DRY_RUN’a dön ve tekrar çalıştır |
| Spreadsheet output | Kolonlar bozuk veya duplicate satırlar oluşur | Önce test tab’ına yaz | Header ve örnek satırları kontrol et | Test tab’ını temizle ve mapping’i düzelt |
| Email alerts | Alert spam oluşur | Önce tek bir review inbox kullan | Bir örnek mesajı incele | Threshold düzelene kadar email’i kapat |
| Account-level changes | Büyük ölçekte güvensiz mutation olur | Starter script’te destructive change kullanma | Mutation satırlarını manuel gözden geçir | Mutation bloğunu tamamen kaldır |
| MCC scale | Runtime ve scope kontrolsüz büyür | Tek hesap veya label filter ile başla | Runtime ve row sayısını ölç | Scope’u daralt veya hesaba böl |
| Timeouts | Büyük report yarıda kalır | Date range veya entity scope daralt | Partial completion log’una bak | Scope küçült ve tekrar çalıştır |
| Old methods / deprecated assumptions | Script hata verir veya yanlış veri döner | Önce güncel Scripts docs kontrolü yap | Field name’leri docs ile eşleştir | Desteklenmeyen field/method’u kaldır |
| False positives | Alert normal değişkenliği issue sanır | Threshold ve exclusion ekle | İlk birkaç çalışmayı manuel kontrol et | Threshold yükselt veya filtre ekle |
Script 1: Budget Burn Alert
Ne yakalar?
Günlük bütçesine göre alışılmadık hızda harcama yapan campaign’leri yakalar.
Otomasyon bunu neden gozden kacirabilir?
Built-in automation bidding optimize edebilir, ama pacing’in asıl operasyonel sorun olduğu anı her zaman basit bir operator alert olarak vermez.
Kurulum degiskenleri
- alert email
- budget-burn threshold
- gerekirse label filter
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var ALERT_EMAIL = 'ALERT_EMAIL@invalid.local';
var BURN_RATIO = 0.85;
var rows = [];
var iter = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
while (iter.hasNext()) {
var campaign = iter.next();
var stats = campaign.getStatsFor("TODAY");
var cost = stats.getCost();
var budget = campaign.getBudget().getAmount();
if (!budget) continue;
if (cost / budget >= BURN_RATIO) {
rows.push(campaign.getName() + ' | cost=' + cost + ' | budget=' + budget);
}
}
if (rows.length === 0) {
Logger.log('No campaigns crossed the burn threshold.');
return;
}
var body = rows.join('n');
Logger.log(body);
MailApp.sendEmail(ALERT_EMAIL, 'Budget burn alert', body);
}
Beklenen cikti
Örnek çıktı formatı: `Campaign Name | cost=… | budget=…`
Guvenli test yontemi
Email’i açmadan önce script’i manuel çalıştırın ve log’u inceleyin.
Zamanlama notu
Bu tip alert için günlük cadence genelde yeterlidir.
Neyi otomatiklestirmemelisiniz?
Bu alert’ten otomatik budget artışı üretmeyin.
Script 2: Search Term N-Gram Waste Miner
Ne yakalar?
Search term içinde tekrar eden waste pattern’lerine işaret eden kelime parçalarını yakalar.
Otomasyon bunu neden gozden kacirabilir?
Otomasyon campaign logic içinde verimli görünebilir ama recurring waste language’i operatöre net göstermeyebilir.
Kurulum degiskenleri
- date range
- minimum clicks
- minimum cost
- spreadsheet URL
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var DATE_RANGE = 'LAST_30_DAYS';
var MIN_CLICKS = 2;
var MIN_COST = 5;
var report = AdsApp.report(
"SELECT search_term_view.search_term, metrics.clicks, metrics.cost_micros " +
"FROM search_term_view " +
"WHERE segments.date DURING " + DATE_RANGE
);
var counts = {};
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var clicks = Number(row['metrics.clicks']);
var cost = Number(row['metrics.cost_micros']) / 1000000;
if (clicks < MIN_CLICKS || cost < MIN_COST) continue;
var terms = String(row['search_term_view.search_term']).toLowerCase().split(/s+/);
for (var i = 0; i < terms.length; i++) {
var token = terms[i];
if (token.length < 3) continue;
if (!counts[token]) counts[token] = { clicks: 0, cost: 0 };
counts[token].clicks += clicks;
counts[token].cost += cost;
}
}
for (var token in counts) {
Logger.log(token + ' | clicks=' + counts[token].clicks + ' | cost=' + counts[token].cost);
}
}
Beklenen cikti
Örnek çıktı formatı: `token | clicks=… | cost=…`
Guvenli test yontemi
Önce kısa date range ile çalıştırın ve token listesinin gerçekten review gerektiren pattern’ler üretip üretmediğini kontrol edin.
Zamanlama notu
Bu iş akışı günlükten çok haftalık cadence ile daha anlamlı olur.
Neyi otomatiklestirmemelisiniz?
Sadece token listesine bakarak otomatik negative eklemeyin.
Script 3: Broken Final URL Checker
Ne yakalar?
Hata dönen veya riskli redirect üreten final URL’leri yakalar.
Otomasyon bunu neden gozden kacirabilir?
Campaign serve etmeye ve spend etmeye devam ederken landing path bozuk olabilir.
Kurulum degiskenleri
- HTTP timeout
- max entities per run
- flag edilecek status code’lar
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var TIMEOUT_MS = 10000;
var MAX_CHECKS = 100;
var checked = 0;
var issues = [];
var iter = AdsApp.keywords().withCondition("Status = ENABLED").get();
while (iter.hasNext() && checked < MAX_CHECKS) {
var keyword = iter.next();
var url = keyword.urls().getFinalUrl();
if (!url) continue;
checked++;
try {
var response = UrlFetchApp.fetch(url, {
muteHttpExceptions: true,
followRedirects: false
});
var code = response.getResponseCode();
if (code >= 400 || code === 301 || code === 302) {
issues.push(keyword.getText() + ' | ' + url + ' | status=' + code);
}
} catch (e) {
issues.push(keyword.getText() + ' | ' + url + ' | fetch_error=' + e);
}
}
if (issues.length === 0) {
Logger.log('No broken or redirected final URLs found in this sample.');
return;
}
Logger.log(issues.join('n'));
}
Beklenen cikti
Örnek çıktı formatı: `keyword | final_url | status=…`
Guvenli test yontemi
Önce düşük `MAX_CHECKS` değeriyle başlatın ve flag edilen redirect’lerin gerçekten aksiyon gerektirip gerektirmediğini görün.
Zamanlama notu
Günlük veya haftada birkaç kez çalıştırmak çoğu hesap için yeterlidir.
Neyi otomatiklestirmemelisiniz?
Bu script ile final URL’leri otomatik rewrite etmeyin.
Script 4: Zombie Product veya Low-Activity Item Hunter
Ne yakalar?
Spend veya serve eden ama zayıf activity sinyali veren Shopping item’lerini yakalar.
Otomasyon bunu neden gozden kacirabilir?
PMax ve Shopping otomasyonu, item-level zayıflığı daha geniş campaign mantığı içinde gizleyebilir.
Kurulum degiskenleri
- date range
- minimum spend
- minimum clicks
- output destination
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var DATE_RANGE = 'LAST_30_DAYS';
var MIN_COST = 10;
var MIN_CLICKS = 3;
var report = AdsApp.report(
"SELECT segments.product_item_id, metrics.clicks, metrics.cost_micros, metrics.conversions " +
"FROM shopping_performance_view " +
"WHERE segments.date DURING " + DATE_RANGE
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var clicks = Number(row['metrics.clicks']);
var cost = Number(row['metrics.cost_micros']) / 1000000;
var conversions = Number(row['metrics.conversions']);
if (cost >= MIN_COST && clicks >= MIN_CLICKS && conversions === 0) {
Logger.log(
row['segments.product_item_id'] +
' | clicks=' + clicks +
' | cost=' + cost +
' | conversions=' + conversions
);
}
}
}
Beklenen cikti
Örnek çıktı formatı: `product_item_id | clicks=… | cost=… | conversions=…`
Guvenli test yontemi
İlk koşuyu suppression listesi değil review listesi olarak ele alın.
Zamanlama notu
Haftalık cadence günlükten daha iyi sinyal verir.
Neyi otomatiklestirmemelisiniz?
Bu script’e bakarak ürünleri otomatik exclude etmeyin.
Script 5: Auction Pressure Monitor
Ne yakalar?
Impression-share loss sinyalleri üzerinden yeni auction pressure veya coverage zayıflığını yakalar.
Otomasyon bunu neden gozden kacirabilir?
Otomasyon auction içinde tepki verebilir ama rekabet baskısını operatöre açık bir alert olarak sunmayabilir.
Kurulum degiskenleri
- date range
- alert threshold
- campaign filter
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var DATE_RANGE = 'LAST_7_DAYS';
var BUDGET_LOSS_THRESHOLD = 0.20;
var RANK_LOSS_THRESHOLD = 0.20;
var report = AdsApp.report(
"SELECT campaign.name, metrics.search_budget_lost_impression_share, " +
"metrics.search_rank_lost_impression_share " +
"FROM campaign WHERE campaign.status = 'ENABLED' " +
"AND segments.date DURING " + DATE_RANGE
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
var budgetLoss = Number(row['metrics.search_budget_lost_impression_share']);
var rankLoss = Number(row['metrics.search_rank_lost_impression_share']);
if (budgetLoss >= BUDGET_LOSS_THRESHOLD || rankLoss >= RANK_LOSS_THRESHOLD) {
Logger.log(row['campaign.name'] + ' | budget_loss=' + budgetLoss + ' | rank_loss=' + rankLoss);
}
}
}
Beklenen cikti
Örnek çıktı formatı: `campaign | budget_loss=… | rank_loss=…`
Guvenli test yontemi
Script çıktısını campaign görünümünde zaten bildiklerinizle karşılaştırın; oradan sonra aksiyon alın.
Zamanlama notu
Bu review katmanı için haftalık cadence genelde yeterlidir.
Neyi otomatiklestirmemelisiniz?
Bu signal’dan otomatik bid veya budget değişikliği üretmeyin.
Script 6: Conversion Action Sanity Reporter
Ne yakalar?
Review gerektiren stale, duplicate veya hatalı yapılandırılmış conversion action’ları yakalar.
Otomasyon bunu neden gozden kacirabilir?
Otomasyon, gördüğü conversion sinyaline optimize olabilir; conversion katmanı stale olsa bile bunu her zaman ayrı bir problem olarak vurgulamaz.
Kurulum degiskenleri
- date range
- incelenecek conversion category’leri
- output destination
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var report = AdsApp.report(
"SELECT conversion_action.name, conversion_action.category, conversion_action.status, " +
"conversion_action.primary_for_goal " +
"FROM conversion_action"
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
Logger.log(
row['conversion_action.name'] + ' | ' +
row['conversion_action.category'] + ' | ' +
row['conversion_action.status'] + ' | primary=' +
row['conversion_action.primary_for_goal']
);
}
}
Beklenen cikti
Örnek çıktı formatı: `conversion_action | category | status | primary=…`
Guvenli test yontemi
Output’u önce manuel review listesi olarak kullanın; goal veya campaign setting’i hemen değiştirmeyin.
Zamanlama notu
Haftalık cadence veya tracking değişikliği sonrası çalıştırma mantıklıdır.
Neyi otomatiklestirmemelisiniz?
Starter script’ten primary/secondary ayarlarını otomatik değiştirmeyin.
Script 7: Performance Max Asset ve Feed Coverage Reporter
Ne yakalar?
Performance Max içinde manuel review gerektiren coverage boşluklarını görünür kılar.
Otomasyon bunu neden gozden kacirabilir?
PMax serve etmeye devam ederken asset depth, feed quality veya coverage eksikleri hızlı incelemede gözden kaçabilir.
Kurulum degiskenleri
- campaign filter
- output destination
- current docs’a göre genişletilecek field listesi
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var report = AdsApp.report(
"SELECT campaign.name, campaign.status " +
"FROM campaign " +
"WHERE campaign.advertising_channel_type = 'PERFORMANCE_MAX'"
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
Logger.log(
row['campaign.name'] +
' | status=' + row['campaign.status'] +
' | review asset-group and feed coverage fields against current docs'
);
}
}
Beklenen cikti
Örnek çıktı formatı: `campaign | status=… | review asset-group and feed coverage fields`
Guvenli test yontemi
Önce bunu PMax review queue olarak kullanın; daha sonra query’yi gerçek coverage field’larıyla genişletin.
Zamanlama notu
Bu katman için haftalık cadence genelde yeterlidir.
Neyi otomatiklestirmemelisiniz?
Bu starter template ile asset ekleme veya kaldırma yapmayın.
Script 8: AI Max Final URL ve Tracking-Template Risk Checker
Ne yakalar?
Final URL expansion ve tracking-template uyumsuzluğu açısından manuel review gerektiren campaign’leri işaretler.
Otomasyon bunu neden gozden kacirabilir?
Google, AI Max final URL expansion ile tracking template uyumsuzsa expanded landing page’in 404 üretebileceğini söylüyor. Bu bir QA problemidir; performans benchmark’ı değildir.
Kurulum degiskenleri
- campaign filter
- gözden geçirilecek tracking pattern’leri
- output destination
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var report = AdsApp.report(
"SELECT campaign.name, campaign.advertising_channel_type " +
"FROM campaign " +
"WHERE campaign.status = 'ENABLED'"
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
Logger.log(
row['campaign.name'] +
' | channel=' + row['campaign.advertising_channel_type'] +
' | manually review AI Max final URL expansion and tracking-template compatibility'
);
}
}
Beklenen cikti
Örnek çıktı formatı: `campaign | channel=… | manually review AI Max final URL expansion`
Guvenli test yontemi
Output’u review queue olarak kullanın ve herhangi bir expansion change öncesi URL’leri manuel test edin.
Zamanlama notu
Büyük URL-template değişikliklerinden sonra veya haftalık cadence ile çalıştırmak yeterlidir.
Neyi otomatiklestirmemelisiniz?
Bu script ile URL expansion ayarını otomatik toggle etmeyin.
Script 9: Spend Pacing ve Anomaly Alert
Ne yakalar?
Yakın geçmiş pacing’e göre anlamlı şekilde farklılaşan cost pattern’lerini yakalar.
Otomasyon bunu neden gozden kacirabilir?
Otomasyon normal çalışırken operatör yine de bugünü son dönem ortalamasına göre görmek isteyebilir.
Kurulum degiskenleri
- pacing threshold
- date window
- campaign filter
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var MULTIPLIER = 1.5;
var iter = AdsApp.campaigns()
.withCondition("Status = ENABLED")
.get();
while (iter.hasNext()) {
var campaign = iter.next();
var today = campaign.getStatsFor("TODAY").getCost();
var last7 = campaign.getStatsFor("LAST_7_DAYS").getCost() / 7;
if (last7 > 0 && today > last7 * MULTIPLIER) {
Logger.log(campaign.getName() + ' | today=' + today + ' | avg_7d=' + last7);
}
}
}
Beklenen cikti
Örnek çıktı formatı: `campaign | today=… | avg_7d=…`
Guvenli test yontemi
Flag edilen campaign’i account calendar ile birlikte değerlendirin; her spike gerçek sorun olmayabilir.
Zamanlama notu
Bu alert için günlük cadence uygundur.
Neyi otomatiklestirmemelisiniz?
Anomaly alert’a bakarak campaign pause etmeyin.
Script 10: Reporting Export to Google Sheets
Ne yakalar?
Tekrarlayan manuel reporting işini standartlaştırır.
Otomasyon bunu neden gozden kacirabilir?
Built-in reporting faydalıdır ama ekipler hâlâ QA veya stakeholder review için belirli bir template’e düzenli export ihtiyacı duyar.
Kurulum degiskenleri
- spreadsheet URL
- sheet name
- date range
- metric columns
Baslangic kodu
Starter script — review and test in a copy of your account before scheduling.
function main() {
var SPREADSHEET_URL = 'YOUR_SPREADSHEET_URL';
var SHEET_NAME = 'campaign_export';
var sheet = SpreadsheetApp.openByUrl(SPREADSHEET_URL).getSheetByName(SHEET_NAME);
if (!sheet) throw new Error('Missing sheet: ' + SHEET_NAME);
sheet.clearContents();
sheet.appendRow(['Campaign', 'Impressions', 'Clicks', 'Cost']);
var report = AdsApp.report(
"SELECT campaign.name, metrics.impressions, metrics.clicks, metrics.cost_micros " +
"FROM campaign WHERE campaign.status = 'ENABLED' " +
"AND segments.date DURING LAST_7_DAYS"
);
var rows = report.rows();
while (rows.hasNext()) {
var row = rows.next();
sheet.appendRow([
row['campaign.name'],
row['metrics.impressions'],
row['metrics.clicks'],
Number(row['metrics.cost_micros']) / 1000000
]);
}
Logger.log('Export completed to ' + SHEET_NAME);
}
Beklenen cikti
Örnek spreadsheet kolonları: `Campaign | Impressions | Clicks | Cost`
Guvenli test yontemi
Önce test tab’ına yazın, header ve row count’u doğrulayın, sonra schedule edin.
Zamanlama notu
Raporlama ritmine göre günlük veya haftalık çalıştırılabilir.
Neyi otomatiklestirmemelisiniz?
Export formatı stabil değilse canlı stakeholder sheet’ini overwrite etmeyin.
Script’leri gürültü oluşturmadan nasıl schedule etmelisiniz?
Önce manuel run, sonra dar schedule, sonra output gerçekten faydalıysa daha geniş rollout. Çoğu hesabın tüm script’leri aynı cadence ile çalıştırmasına gerek yoktur.
Budget pacing veya URL risk gibi yüksek hassasiyetli alert’lerde günlük schedule uygundur. Search-term mining, conversion-action sanity, PMax coverage veya auction-pressure review gibi işlerde haftalık schedule çoğu zaman daha kullanışlıdır.
Ne zaman script, ne zaman API job, ne zaman manuel audit gerekir?
| Need | Use script when | Use API job when | Use manual audit when | Risk to avoid |
|---|---|---|---|---|
| Quick alerting | Hafif monitoring katmanı gerekiyorsa | Cross-account orchestration gerekiyorsa | Bağlam ölçekten daha kritikse | Sistem gerektiren işi script ile çözmeye çalışmak |
| Repeated exports | Basit schedule output yeterliyse | Geniş ölçekli pipeline veya warehouse mantığı gerekiyorsa | Tek seferlik export yeterliyse | İhtiyaç netleşmeden aşırı kurgu yapmak |
| Search-term review | Kompakt review listesi yeterliyse | Geniş veri depolama ve join gerekiyorsa | Query intent derin insan yorumu gerektiriyorsa | Zayıf kanıttan otomatik negative üretmek |
| URL QA | Tekrarlayan health check gerekiyorsa | Daha derin crawling logic gerekiyorsa | Landing-page intent manuel incelenmeliyse | Status code’u tüm cevap sanmak |
| Account diagnosis | Sürekli QA sinyali gerekiyorsa | Programmatic infrastructure gerekiyorsa | Hesap yapısal audit istiyorsa | Monitoring’i strategy sanmak |
Daha derin systems workflow için bu pillar’ı Google Ads data retention export script, SMB Google Ads audit checklist ve Consent Mode checklist ile bağlayın.
Kaçınılması gereken yaygın hatalar
- Script’leri account strategy yerine koymak.
- Read-only QA script’lerini kontrolsüz mutation aracına çevirmek.
- PMax veya AI Max blind spot’larını otomatik düzeltmeye çalışmak.
- Starter code’u manuel test yapmadan schedule etmek.
- First-party kanıt olmadan script’lerin CPA, ROAS, gelir veya conversion rate iyileştirdiğini iddia etmek.
- Tüm script’leri fazla sık çalıştırıp ekip üzerinde alert gürültüsü yaratmak.
Son öneri
Script’leri en güçlü oldukları yerde kullanın: monitoring, export, QA ve anomaly detection. Otomasyon campaign içinde optimize etsin, script’ler çevredeki sorunları görünür kılsın, insan review ise gerçekten neyin değişeceğine karar versin.
Dashboard template’leri ve setup notlarıyla birlikte tam script pack’i mi istiyorsunuz? Google Ads script pack’i talep edin ya da account systems audit alın; hesabınıza uygun monitoring katmanını birlikte kuralım.
FAQ
Google Ads Script’leri otomasyonla birlikte hâlâ çalışır mı?
Evet. En değerli rolleri, otomasyonun yerine geçmek değil, onun etrafında monitoring ve QA katmanı oluşturmaktır.
Google Ads Script’leri client account’larda güvenli midir?
Evet, eğer önce read-only veya export-only mantıkla başlar, scope’u dar tutar ve output’u schedule etmeden önce incelerseniz.
Script’ler budget veya bid’i otomatik değiştirebilir mi?
Teknik olarak evet, ama bu en güvenli varsayılan değildir. Çoğu hesapta alert ve review akışları daha iyi ilk kullanım alanıdır.
Bu script’ler Performance Max ile çalışır mı?
Bazıları doğrudan, bazıları dolaylı olarak PMax review’u destekler. PMax çoğu zaman bulk change’den çok coverage, feed ve landing-page QA ister.
Script’ler her wasted query veya product issue’yu yakalayabilir mi?
Hayır. Pattern ve review queue çıkarabilirler ama account judgment’in yerini tutmazlar.
Google Ads Script’leri ne sıklıkta çalıştırılmalı?
Cadence ihtiyaca göre belirlenmeli. Yüksek hassasiyetli alert’ler günlük, review script’leri çoğu zaman haftalık çalışır.
Script mi, Google Ads API mi kullanmalıyım?
Hafif monitoring ve export için script, daha büyük ölçekli sistem, pipeline veya cross-account engineering için API daha uygundur.
Kaynak notları
- Google Ads Scripts overview
- Google Ads Scripts examples
- Google Ads API introduction
- Google Ads API reporting overview
- Performance Max in the Google Ads API
- AI Max for Search campaigns
- How AI Max for Search campaigns works
- About Performance Max campaigns
- Consent mode setup
- Consent Mode overview