Herkese merhaba! Bu makalede, Google E-tablolar (Sheets) ve Google Apps Script kullanarak tamamen ücretsiz bir Formül tabanlı SEO Denetim tablosu nasıl oluşturulacağını yazacağım. Bu şekilde, önemli hataları hemen gerçek zamanlı olarak tespit edebileceksiniz. Bu kurulum ayrıca Ahrefs, Semrush veya Screaming Frog gibi ücretli SEO araçlarına erişiminizin olmadığı durumlarda da faydalı olacaktır çünkü Google Apps Script, tamamen ücretsiz bir şekilde kullanılabilen ve maksimum verimlilik ve erişilebilirlik için bir web uygulaması olarak çalışabilen bir bulut tabanlı bir araçtır.
Başlamak için bir Google hesabına ve Google Sheets’in temel anlayışına ihtiyacınız olacak. Kendi SEO Denetim Uygulama Komut Dosyasını oluşturmak için şu adımları izleyin:
Google E-tablolar ve Apps Script Ayarları
Google Sheets’te bir e-tablo oluşturmak için şu adımları izleyebilirsiniz:
Google Sheets’i Açın:
- Web tarayıcınızı açın ve Google’a giriş yapın, eğer henüz yapmadıysanız
- “https://sheets.new/” adresini girerek kolayca bir e-tablo oluşturabilirsiniz.

A Sütununa taramak istediğiniz URL’leri ekleyin.
- Site haritasından veya manuel olarak taramak istediğiniz URL’leri ekleyin

Apps Komut Dosyasını açın
Formül kodlarını eklemek için Apps Komut Dosyasını açın.

Aşağıda yer alan kodu buraya ekleyin ve daha sonra kaydedin.
function checkForHTTPS(url) {
if (!url) {
return '';
}
var trimmedUrl = url.trim();
if (trimmedUrl.startsWith("https://")) {
return '✓';
} else {
return 'HTTPS protokolü eksik';
}
}

Tekrar E-tablomuza dönerek kodu test edelim. Bunun için görseldeki gibi kod üzerinde checkForHTTPS adı ile eklediğimiz fonksiyon için bu formülü kullanalım: =checkForHTTPS(A2)
Bu şekilde A2’de yer alan URL’lerin HTTPS ile başlayıp başlamadığını kontrol edebileceğiz. Aynı şekilde diğer URL’leri de kontrol edebilmek için B2’de eklediğimiz formülü aşağı sütunlar için de kopyalayalım.

Aynı şekilde Kırık Link tespiti yapmak için de Apps Script üzerinden bu kodu ekleyelim. Bunun için yine yukarıda Uzantılar kısmından Apps Komut Dosyasına gelelim. Yeni bir kod eklemek için ‘+’ işaretine tıklayıp Komut Dosyasını seçerek yeni bir komut dosyası ekleyebiliriz.

Kırık sayfa tespiti yapmak için yeni oluşturduğumuz bu dosyaya aşağıda yer alan kodu ekleyelim.
function getHttpStatus(url) {
if (!url) {
return '';
}
try {
var response = UrlFetchApp.fetch(url, { followRedirects: false });
var statusCode = response.getResponseCode();
if (statusCode >= 300 && statusCode < 400) {
return "3xx yönlendirme";
} else if (statusCode >= 200 && statusCode < 300) {
return "✓";
} else {
return "X";
}
} catch (e) {
return "Kırık Sayfa";
}
}
Aynı şekilde “getHttpStatus” olarak isimlendirilen fonksiyonu formül bazlı çalıştırmak için Google E-tablolara gelerek “=getHttpStatus(A2)” formülünü ekleyerek test edebiliriz.

Aynı şekilde aşağıda yer alan linklerden diğer SEO hatalarını kontrol etmenizi sağlayacak kodlara ulaşabilirsiniz. Eklemek istediğiniz kodları ekleyin ve kaydedin ve daha sonra aynı şekilde formül kısmını girerek A sütununa ekleyeceğiniz
Tüm formüllere ulaşmak ve eklemek için aşağıdaki bağlantıya tıklayın.
Yukarıda 2 kodu eklediğimiz şekilde Apps Komut Dosyasına istediğiniz kodları ekleyin ve kayıt edin. Daha sonra da kodlarda yer alan fonksiyon adlarını kullanarak aynı şekilde formül oluşturabilirsiniz. Bu sayede dinamik olarak A sütununa ekleyeceğiniz URL’leri tarayabileceksiniz.
| URLs | HTTP Durumu | Ardışık tireler (URL) | Eksik HTTPS protokolü | Non-ASCII Karakterler (URL) | Tekrarlayan URL Yolu | URL’de boşluk | Alt çizgili(_) URL | Büyük harf içeren URL | H1 Başlığı Durumu | Hreflang Etiketi Durumu | Canonical Etiketi Durumu | Noindex Etiketi Durumu | Birden fazla eğik çizgi (slash) |
| örneksayfa.com | =getHttpStatus(A2) | =checkForConsecutiveHyphens(A2) | =checkForHTTPS(A2) | =checkForNonASCIICharacters(A2) | =checkForRepetitivePathComponents(A2) | =checkForSpaces(A2) | =checkForUnderscores(A2) | =checkForUppercaseChars(A2) | =checkForH1Tags(A2) | =checkForHreflangTags(A2) | =checkForCanonical(A2) | =checkForNoIndex(A2) | =checkForMultipleSlashes(A2) |
Tüm Formül Kodları İşlevleri
Birden fazla eğik çizgi (slash)
Bu fonksiyon, bir URL’nin birden fazla eğik çizgi içerip içermediğini kontrol eder. Birden fazla eğik çizgi genellikle URL’lerde istenmeyen bir durumdur çünkü kullanıcı dostu olmayabilir ve arama motorları tarafından optimize edilmemiş olarak algılanabilir. Fonksiyon, bir URL’nin “https://” ile başlayıp başlamadığını kontrol eder ve ardından eğer URL’de “https://” iki veya daha fazla kez tekrarlanıyorsa (birden fazla eğik çizgi varsa), bir uyarı mesajı döndürür: ‘Birden fazla eğik çizgi içeriyor (Slash)’. Bu, URL’nin doğru bir şekilde biçimlendirilmiş olmasını ve SEO açısından daha iyi optimize edilmiş olmasını sağlar.
Noindex Etiketi Durumu
- Fonksiyonun Amacı:
- Bu fonksiyon, bir URL’deki “noindex” meta etiketinin varlığını kontrol eder. “noindex” meta etiketi, bir sayfanın arama motorları tarafından dizine eklenmemesini sağlar. Bu, özellikle geçici veya geliştirme aşamasındaki sayfalar için kullanışlıdır.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
UrlFetchApp.fetchyöntemiyle belirtilen URL’deki sayfa içeriği alınır.- Alınan içerikte “noindex” meta etiketinin olup olmadığı bir regex deseni ile kontrol edilir.
- Eğer “noindex” meta etiketi varsa, ‘NoIndex Etiketi’ mesajı döner.
- Eğer “noindex” meta etiketi yoksa, ‘✓’ mesajı döner.
- Herhangi bir hata oluşursa, örneğin URL alımı başarısız olursa, ‘Hata’ mesajı döner.
Bu fonksiyon, web sayfalarının arama motorları tarafından dizine eklenmemesini sağlayan “noindex” meta etiketinin varlığını kontrol ederek, geliştirme veya geçici sayfaların yanlışlıkla dizine eklenmesini önler. Bu sayede, kullanıcıların yanlışlıkla erişebileceği geçici içeriklerin arama sonuçlarında görünmesi engellenir ve kullanıcı deneyimi iyileştirilir.
Canonical Etiketi Durumu
- Fonksiyonun Amacı:
- Bu fonksiyon, bir URL’deki canonical etiketinin doğruluğunu kontrol eder. Canonical etiketi, bir sayfanın bir başka sayfaya olan özgün bir referansını sağlar ve arama motorlarına hangi URL’nin asıl içerik olduğunu bildirir. Bu, SEO açısından önemlidir çünkü arama motorları, çift içerik problemlerini önlemek ve doğru sayfayı dizine eklemek için canonical etiketlerini kullanır.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
UrlFetchApp.fetchyöntemiyle belirtilen URL’deki sayfa içeriği alınır.- Alınan içerikte canonical etiketinin olup olmadığı kontrol edilir.
- Eğer canonical etiketi varsa, etiketin href özelliği aracılığıyla belirtilen URL alınır.
- Alınan canonical URL, kontrol edilen URL ile karşılaştırılır:
- Eğer ikisi aynıysa, ‘✓’ mesajı döner, çünkü canonical URL doğrudur.
- Aynı değilse, ‘Canonical Etiketi Sayfa URL ile uyumsuz’ mesajı döner.
- Eğer canonical etiketi yoksa, ‘Canonical Etiketi Eksik’ mesajı döner.
- Herhangi bir hata oluşursa, örneğin URL alımı başarısız olursa, ‘Hata’ mesajı döner.
Bu fonksiyon, bir web sitesinin canonical etiketlerinin doğru bir şekilde yapılandırılıp yapılandırılmadığını kontrol ederek, çift içerik problemlerini önlemenize ve arama motorları tarafından sitenizin doğru şekilde dizine eklenmesini sağlamaya yardımcı olur.
H1 Başlığı Durumu
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’de H1 başlık etiketinin olup olmadığını ve varsa sayılarını kontrol eder. H1 başlık etiketi, bir sayfanın ana başlığını tanımlar ve SEO açısından önemlidir çünkü arama motorları sayfanın içeriğini anlamak için bu başlık etiketlerine bakarlar.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
UrlFetchApp.fetchyöntemiyle belirtilen URL’deki sayfa içeriği alınır.- Alınan içerikteki H1 başlık etiketlerinin sayısı
matchmetodu ile hesaplanır. - H1 başlık etiketi sayısına göre aşağıdaki kontroller yapılır:
- Eğer H1 başlık etiketi bulunmuyorsa, ‘H1 Etiketi Eksik’ mesajı döner.
- Eğer birden fazla H1 başlık etiketi bulunuyorsa, ‘Birden Fazla H1 Etiketi’ mesajı döner.
- Eğer sadece bir adet H1 başlık etiketi bulunuyorsa, ‘✓’ mesajı döner.
- Herhangi bir hata oluşursa, örneğin URL alımı başarısız olursa, ‘Hata’ mesajı döner.
Bu fonksiyon, web sayfalarının başlık yapısını kontrol ederek SEO uyumluluğunu değerlendirir. H1 başlık etiketi, bir sayfanın ana başlığını tanımlar ve SEO açısından önemlidir. Bu fonksiyon sayesinde, H1 etiketi eksik veya birden fazla kullanılmışsa, gerekli düzeltmeler yapılarak SEO performansı artırılabilir.
Büyük harf içeren URL
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin büyük harf karakterleri içerip içermediğini kontrol eder. Büyük harf karakterleri, URL’lerin tutarlılığı ve SEO performansı açısından önerilmez çünkü bazı sistemler büyük/küçük harf duyarlılığına sahiptir ve bu durum kullanıcıların doğru sayfaya ulaşamamasına yol açabilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL içinde büyük harf karakteri olup olmadığı düzenli ifade (
/[A-Z]/) ile kontrol edilir:- Eğer URL büyük harf karakteri içeriyorsa, ‘Büyük Harf Karakterleri İçeriyor’ mesajı döner.
- Eğer URL büyük harf karakteri içermiyorsa, ‘✓’ mesajı döner.
Bu fonksiyon, URL’lerin SEO açısından daha tutarlı ve kullanıcı dostu olmasını sağlamak için kullanılabilir. Büyük harf karakterleri içeren URL’ler, bazı tarayıcılar ve sistemler tarafından farklı yorumlanabilir ve bu durum, kullanıcıların sayfalara ulaşamamasına neden olabilir. Bu tür URL’leri tespit ederek küçük harflerle düzenlemek, SEO performansınızı iyileştirebilir ve kullanıcı deneyimini artırabilir.
Alt çizgili(_) URL
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin alt çizgi karakterleri (_) içerip içermediğini kontrol eder. Alt çizgi karakterleri, URL’lerde SEO açısından önerilmez çünkü arama motorları boşlukları ayırıcı olarak kabul ederken, alt çizgiler bu şekilde değerlendirilmez.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL içinde alt çizgi karakteri olup olmadığı kontrol edilir:
- Eğer URL alt çizgi karakteri içeriyorsa, ‘Alt Çizgiler(_) İçeriyor’ mesajı döner.
- Eğer URL alt çizgi karakteri içermiyorsa, ‘✓’ mesajı döner.
Bu fonksiyon, URL’lerin SEO açısından daha uygun ve kullanıcı dostu olmasını sağlamak için kullanılabilir. Alt çizgi karakterleri yerine, kelimeler arasında ayırıcı olarak kısa çizgi (-) kullanılması SEO açısından daha iyidir. Arama motorları kısa çizgileri kelime ayırıcı olarak kabul ederken, alt çizgiler bu şekilde değerlendirilmez. Bu nedenle, URL’lerde alt çizgilerin tespit edilip düzeltilmesi, SEO performansınızı artırabilir ve kullanıcı deneyimini iyileştirebilir.
URL’de boşluk
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin boşluk karakterleri içerip içermediğini kontrol eder. Boşluk karakterleri, URL’lerin geçerliliğini ve SEO performansını olumsuz etkileyebilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL içinde boşluk karakteri olup olmadığı kontrol edilir:
- Eğer URL boşluk karakteri içeriyorsa, ‘Boşluklar İçeriyor’ mesajı döner.
- Eğer URL boşluk karakteri içermiyorsa, ‘✓’ mesajı döner.
Bu fonksiyon, URL’lerin SEO açısından daha temiz ve geçerli olmasını sağlamak için kullanılabilir. Boşluk karakterleri içeren URL’ler, bazı tarayıcılar ve sistemler tarafından doğru işlenmeyebilir ve arama motorları tarafından olumsuz değerlendirilebilir. Bu tür URL’leri tespit ederek gerekli düzenlemeleri yapmak, SEO performansınızı iyileştirebilir ve kullanıcı deneyimini artırabilir.
Tekrarlayan URL Yolu
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin yol bileşenlerinde tekrarlayan segmentlerin olup olmadığını kontrol eder. Tekrarlayan yol bileşenleri, URL yapısının karmaşıklığını artırabilir ve SEO performansını olumsuz etkileyebilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL’den protokol (
http://veyahttps://) kaldırılır ve URL’nin geri kalan kısmı alınır. - Yol bileşenleri (
/ile ayrılmış segmentler) elde edilir. - Boş dizeler filtrelenir.
- Yol bileşenleri içinde tekrarlayan bileşenler olup olmadığı kontrol edilir:
- Eğer tekrarlayan bileşenler varsa, ‘Tekrarlanan URL bileşenleri içeriyor’ mesajı döner.
- Eğer tekrarlayan bileşenler yoksa, ‘✓’ mesajı döner.
Bu fonksiyon, URL’lerin SEO açısından daha temiz ve kullanıcı dostu olmasını sağlamak için kullanılabilir. Tekrarlayan yol bileşenleri, URL’nin karmaşık ve düzensiz görünmesine neden olabilir ve arama motorları tarafından olumsuz değerlendirilebilir. Bu tür URL’leri tespit ederek optimize etmek, SEO performansınızı ve kullanıcı deneyiminizi iyileştirebilir.
Non-ASCII Karakterler (URL)
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin sadece ASCII karakterler içerip içermediğini kontrol eder. ASCII dışı karakterler, URL’nin okunabilirliğini ve geçerliliğini etkileyebilir ve bazı tarayıcılar veya sistemler tarafından doğru işlenmeyebilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL’nin yalnızca ASCII karakterler içerip içermediği
isASCIIfonksiyonu ile kontrol edilir.- Eğer ASCII dışı karakterler içeriyorsa, ‘ASCII Dışı Karakterler Bulundu’ mesajı döner.
- Eğer yalnızca ASCII karakterler içeriyorsa, ‘✓’ mesajı döner.
Yardımcı Fonksiyon: isASCII(str)
- Fonksiyonun Amacı:
- Bu yardımcı fonksiyon, verilen bir dizenin sadece ASCII karakterler içerip içermediğini kontrol eder.
- Parametre:
str: Kontrol edilecek dize.
- İşleyiş:
- Dizenin yalnızca ASCII karakterler içerip içermediği düzenli ifade (
^[\x00-\x7F]*$) ile kontrol edilir.- Eğer dize yalnızca ASCII karakterler içeriyorsa,
truedöner. - Eğer ASCII dışı karakterler içeriyorsa,
falsedöner.
- Eğer dize yalnızca ASCII karakterler içeriyorsa,
- Dizenin yalnızca ASCII karakterler içerip içermediği düzenli ifade (
Bu fonksiyon, URL’lerin SEO açısından daha temiz ve standartlara uygun olmasını sağlamak için kullanılabilir. ASCII dışı karakterler içeren URL’ler, kullanıcı deneyimini olumsuz etkileyebilir ve bazı sistemler tarafından yanlış işlenebilir. Bu tür URL’leri tespit ederek düzeltmek, SEO performansınızı ve kullanıcı deneyiminizi iyileştirebilir.
Eksik HTTPS protokolü
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin HTTPS protokolünü kullanıp kullanmadığını kontrol eder. HTTPS protokolü, SEO açısından önemlidir çünkü güvenli bağlantılar arama motorları tarafından tercih edilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL’deki gereksiz boşluklar
trimmetodu ile kaldırılır. - URL’nin “https://” ile başlayıp başlamadığı kontrol edilir:
- Eğer URL “https://” ile başlıyorsa, ‘✓’ mesajı döner.
- Eğer URL “https://” ile başlamıyorsa, ‘HTTPS protokolü eksik’ mesajı döner.
Bu fonksiyon, URL’lerin güvenli bağlantılar kullanıp kullanmadığını tespit etmeye yardımcı olur. HTTPS protokolü, kullanıcı verilerinin güvenliğini sağlar ve arama motorları tarafından daha yüksek sıralamalarda değerlendirilir. HTTPS protokolünü kullanmak, web sitenizin SEO performansını artırabilir ve kullanıcı güvenini sağlayabilir. Bu fonksiyon, HTTPS protokolü kullanmayan URL’leri tespit ederek gerekli düzeltmeleri yapmanıza yardımcı olabilir.
Ardışık tireler (URL)
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin arka arkaya iki tire (–) içerip içermediğini kontrol eder. Arka arkaya tireler, URL yapısı açısından önerilmez ve SEO performansını olumsuz etkileyebilir.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
- URL’deki gereksiz boşluklar
trimmetodu ile kaldırılır. - URL, arka arkaya iki tire (–) içerip içermediği kontrol edilir:
- Eğer içeriyorsa, ‘Arka arkaya tireler’ mesajı döner.
- Eğer içermiyorsa, ‘✓’ mesajı döner.
Bu fonksiyon, URL’lerin SEO açısından daha temiz ve kullanıcı dostu olmasını sağlamak için kullanılabilir. Arka arkaya tireler, URL’nin okunabilirliğini ve profesyonelliğini azaltabilir ve arama motorları tarafından olumsuz değerlendirilebilir. Bu tür URL’leri tespit ederek optimize etmek, SEO performansınızı iyileştirmeye yardımcı olabilir.
HTTP Durumu
- Fonksiyonun Amacı:
- Bu fonksiyon, verilen bir URL’nin HTTP durum kodunu kontrol ederek SEO açısından önemli olan yönlendirme (3xx), başarılı yanıt (2xx) veya başarısız yanıt (4xx, 5xx) durumlarını belirler.
- Parametre:
url: Kontrol edilecek web sayfasının URL’si.
- İşleyiş:
- URL boşsa, fonksiyon boş bir string döner.
UrlFetchApp.fetchyöntemiyle belirtilen URL’deki sayfa durumu alınır ve yönlendirmelerin takip edilmemesi sağlanır.- Alınan yanıtın durum kodu (
statusCode) kontrol edilir:- Eğer durum kodu 300 ile 399 arasında ise, “3xx yönlendirme” mesajı döner.
- Eğer durum kodu 200 ile 299 arasında ise, “✓” mesajı döner.
- Diğer durum kodlarında (örneğin 400 veya 500 serisi), “X” mesajı döner.
- Herhangi bir hata oluşursa, örneğin URL alımı başarısız olursa, “Kırık Sayfa” mesajı döner.
Bu fonksiyon, web sayfalarının durum kodlarını kontrol ederek SEO performansını değerlendirmeye yardımcı olur. 3xx yönlendirmeler, kullanıcıların ve arama motorlarının doğru sayfaya yönlendirildiğinden emin olunmasını sağlar. 2xx başarılı yanıtlar, sayfanın erişilebilir ve sağlıklı olduğunu gösterir. 4xx ve 5xx hataları ise kırık sayfalar veya sunucu hataları anlamına gelir ve SEO’yu olumsuz etkileyebilir. Bu tür durumları tespit ederek hızlıca düzeltme yapabilirsiniz.
Sonuç
Bu makalede, Google Sheets ve Google Apps Script kullanarak formül tabanlı ücretsiz bir SEO Denetimi elektronik tablosu nasıl oluşturulacağını tartıştık. Bu yöntem, herhangi bir ücretli SEO aracına erişim olmadan web sitenizin SEO performansını kontrol etmenize ve geliştirmenize olanak tanır. Google Apps Script, bütçe kısıtlamaları olmaksızın maksimum verimlilik ve erişilebilirlik sağlayan bulut tabanlı ücretsiz bir araçtır. Başlamak için bir Google hesabına ve Google Sheets’in temel bilgisine ihtiyacınız olacak. Ardından, URL’leri ekleyerek ve gerekli formülleri uygulayarak SEO denetimi elektronik tablonuzu oluşturabilirsiniz. Bu formüller, her URL için HTTPS protokolünün kullanımını, H1 başlık etiketlerinin varlığını, canonical etiketlerin doğruluğunu ve daha fazlasını kontrol eder. Ayrıca, bu formüllerin uygulanması ve URL’lerin SEO amaçları için önemli yönlerinin kontrol edilmesi için adım adım talimatlar da sağladım, bu da web sitenizin SEO performansını artırmanıza yardımcı olur.