İş yerinde e-tablolar

GAS (Google Apps Script) nedir?
Google E-Tablolar otomasyonuna giriş

Her hafta bir tabloyu aynı biçime getirmek. Yapıştırılan verilerden boş satırları silmek. Bir koşulu karşılayan satırları işaretlemek. E-tablolar adımları belli işlerle doludur.

Bu tür işleri otomatik yapan şey GAS'tır (Google Apps Script). Bu yazıda GAS'ın neler yapabildiğini, nereden başlanacağını ve birçok kişinin ilk seferde takıldığı “yetkilendirme” ekranlarının nasıl geçileceğini anlatıyoruz.

GAS nedir?

GAS, Google'ın program çalıştırma yoludur. JavaScript ile aynı sözdizimini kullanır ve Google E-Tablolar'ın yanı sıra Gmail, Google Takvim, Google Drive ve Google Formlar'ı da yönetir.

Yalnızca bir Google hesabı gerekir. Ücretsizdir ve hiçbir şey kurmanız gerekmez: tarayıcıda bir e-tablo açın ve yazmaya başlayın. Program kendi bilgisayarınızda değil, Google'ın sunucularında çalışır.

Kaydedilen makrolar ve GAS

Google E-Tablolar'da yaptıklarınızı kaydedip istediğiniz kadar tekrarlamanızı sağlayan “makrolar” vardır. “Uzantılar” → “Makrolar” → “Makro kaydet” ile kaydı başlatın, hücreleri seçip yazın; işlemleriniz GAS kodu olarak kaydedilir.

Kayıt: B2'ye “test” yazıp kalın yapmak
/** @OnlyCurrentDoc */

function myFunction() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('B2').activate();
  spreadsheet.getCurrentCell().setValue('test');
  spreadsheet.getActiveRangeList().setFontWeight('bold');
};

Yani bir makronun içi GAS'tır. Makroya “Kalın testi” gibi bir ad verseniz bile koddaki fonksiyonun adı myFunction olur. Menüdeki ad ile fonksiyon adı ayrı tutulur.

Kayıt sırasında alttaki çubuktan “Mutlak referansları kullan” veya “Göreli referansları kullan” seçilir. Mutlak referanslar B2 gibi hücre adresi olarak kaydedilir; makro hangi hücre seçili olursa olsun hep aynı yere yazar. Göreli referanslar “geçerli hücrenin bir satır altı” gibi kaydedilir ve seçili hücreden başlar.

Yalnızca kayıtla uzunluğu değişen tablolar ya da koşula bağlı adımlar yapılamaz. Oradan sonrası, kaydedilen kodu okuyup üzerine eklemektir.

GAS ile neler yapılabilir

  • Yapıştırılan verilerdeki boş satırları silmek ve başlıkları düzenlemek
  • Tutarlara veya tarihlere bakıp bir sütuna “Büyük” ya da “Gecikmiş” yazmak
  • E-tabloya kendi menünüzü eklemek ve işleri bir düğmeyle çalıştırır gibi çalıştırmak
  • Hücrelerde kullanılacak kendi fonksiyonlarınızı yazmak (özel fonksiyonlar)
  • Bir tabloya göre Gmail ile e-posta göndermek
  • Bir işi sabit bir saatte çalıştırmak, örneğin her sabah 8'de (tetikleyiciler)
  • Google Formlar yanıtlarını gelir gelmez başka bir sayfaya aktarmak

Elle yapıldığında bunların her biri birkaç dakikadan onlarca dakikaya kadar sürer. Bir kez yazınca sonrasında bir menüye tıklamak yeter, ya da kendi kendine çalışır.

GAS'a nasıl başlanır

  1. E-tabloyu açıp “Uzantılar” → “Apps Script”i seçin
  2. Düzenleyici yeni bir sekmede açılır: solda “Kod.gs”, sağda function myFunction() { } yazar
  3. Kodu { } içine yazıp kaydedin (Ctrl+S, Mac'te ⌘+S)
  4. Üstteki “▷ Çalıştır”a tıklayın. Sonuç alttaki “Yürütme günlüğü”nde görünür
İlk betik: A1'i okuyup günlüğe yazmak ve B1'e yazmak
function myFunction() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const value = sheet.getRange('A1').getValue();
  Logger.log(value);
  sheet.getRange('B1').setValue('Kontrol edildi');
}

Logger.log bir değeri yürütme günlüğüne yazar. Sayılar ondalık noktalı görünür, örneğin 120.0 (console.log 120 gösterir). Bir şey beklendiği gibi çalışmazsa önce günlükteki değerlere bakın.

İlk çalıştırmadaki yetkilendirme ekranları

Yazdığınız kodu ilk kez çalıştırdığınızda, betiğin e-tablonuzu okuyup düzenlemesine izin verip vermediğinizi soran bir ekran çıkar. Çoğu kişi burada takılır, o yüzden adım adım bakalım.

  1. “Yetkilendirme gerekli” → İzinleri incele / Tamam
  2. Bir hesap seçin
  3. “Google bu uygulamayı doğrulamadı” → sol alttaki “Gelişmiş”
  4. “(proje adı) sayfasına git (güvenli değil)”
  5. Neye izin verdiğinizi kontrol edip “İzin ver”e tıklayın (seçilecek öğeler varsa seçip “Devam”a tıklayın)

“Google bu uygulamayı doğrulamadı”, Google'ın incelemediği betiklerde çıkan bir uyarıdır. Kendi yazdığınız betikler ve kaydettiğiniz makrolar incelenmez, bu yüzden bu ekran her zaman çıkar. Kendiniz yaptıysanız devam etmekte sakınca yok.

Buna karşılık, tanımadığınız birinden gelen bir e-tabloda bu ekran çıkarsa “Güvenli sayfaya dön”ü seçin. İzin verildikten sonra betik, hesabınızla e-tablolarınızda ve e-postanızda işlem yapabilir.

Kodun başına /** @OnlyCurrentDoc */ yazarsanız betik yalnızca “bu e-tabloya” dokunabilir ve istenen izinler daralır. Kaydedilen makrolarda bu baştan vardır.

Aynı adımları alıştırmanın 1. görevinde deneyebilirsiniz.

Sık kullanılan kodlar

E-tabloyla çalışırken en sık kullanılanlar şunlardır. Satır ve sütun numaraları 1'den, getValues ile okunan dizinin dizinleri 0'dan başlar.

KodAnlamı
const sheet = SpreadsheetApp.getActiveSheet();Şu an açık olan sayfa
sheet.getRange('A1').getValue()A1'in değerini oku
sheet.getRange('A1').setValue('Tamamlandı')A1'e yaz
sheet.getRange(2, 3)2. satır, 3. sütun (C2). Sütunlar sayıyla verilebilir
sheet.getRange('A2:C10').getValues()Bir aralığı tek seferde oku (iki boyutlu dizi)
sheet.getRange(2, 1, 9, 3).setValues(values)Tek seferde yaz (satır ve sütunları diziyle eşleştir)
sheet.getLastRow()Değer içeren son satırın numarası
sheet.appendRow(['10/31', 'Sato', 5000])Son satırın altına bir satır ekle
sheet.deleteRow(5)5. satırı sil (alttaki satırlar yukarı kayar)
sheet.getRange('A1:D1').setFontWeight('bold')Kalın yap
sheet.getRange('A1:D1').setBackground('#fff2cc')Arka plan rengini ayarla
Logger.log(value)Yürütme günlüğüne yaz (değerleri kontrol etmek için)
Tüm satırları dolaşıp koşula göre ayırmak
function judgeTargets() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for (let row = 2; row <= sheet.getLastRow(); row++) {
    const sales = sheet.getRange(row, 2).getValue();
    const target = sheet.getRange(row, 3).getValue();
    if (sales >= target) {
      sheet.getRange(row, 4).setValue('Ulaşıldı');
    } else {
      sheet.getRange(row, 4).setValue('Ulaşılmadı');
    }
  }
}
Açılışta kendi menünüzü eklemek (onOpen)
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('Ay sonu işlemleri')
    .addItem('Büyük satışları işaretle', 'markLarge')
    .addToUi();
}

onOpen adlı bir fonksiyon, e-tablo açıldığında otomatik çalışır. Düzenleyicideki “▷ Çalıştır” ile çalıştırırsanız Cannot call SpreadsheetApp.getUi() from this context. hatası alırsınız; bu yüzden kaydedip e-tabloyu yeniden açarak kontrol edin.

E-posta göndermek ve tetikleyicilerle zamanlamak

GAS'ta en çok aranan konular e-posta gönderme ve tetikleyicilerdir.

Bir tablodaki adreslere e-posta göndermek
function sendReminders() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, 2).getValues();
  rows.forEach(([name, email]) => {
    MailApp.sendEmail(email, 'Teslim tarihi hatırlatması', name + ',\n\nteslim tarihi bu cuma.');
  });
}

Gönderim sınırı vardır: ücretsiz bir Google hesabı günde en fazla 100 e-posta gönderebilir (Google Workspace hesapları daha fazla). Bir çalıştırma en fazla 6 dakika sürebilir; sonrasında “Exceeded maximum execution time” ile durur.

Zamanlamak için düzenleyicinin solundaki “Tetikleyiciler”e (saat simgesi) → “Tetikleyici ekle”ye tıklayıp fonksiyonu ve “Zamana dayalı”yı seçin. Her gün, hafta veya ay için bir saat aralığı belirleyebilirsiniz.

Yalnızca denerken bile e-postalar gerçekten gönderilir. Önce yalnızca kendi adresinizin olduğu bir tabloyla deneyin.

Excel VBA'dan farkları

GASExcel VBA
KodJavaScriptVBA(Visual Basic)
Nerede çalışırGoogle'ın sunucularıKendi bilgisayarınızdaki Excel
Neler gerekirBir tarayıcı ve bir Google hesabıExcel'in masaüstü sürümü (çoğunlukla Windows'ta)
Bağlandığı yerlerGmail, Takvim, Drive, FormlarWord, Outlook, bilgisayardaki dosyalar
Zamanlanmış çalıştırmaTetikleyicilerle (bilgisayar kapalıyken bile çalışır)Windows Görev Zamanlayıcı veya benzeriyle birlikte

İkisinde de fikirler aynıdır: hücreleri okumak, yazmak, tekrarlamak ve koşullara göre ayırmak. Birini bilen diğerini de okuyabilir. Excel makrolarını Excel makrolarına giriş yazımızda anlatıyoruz.

Tarayıcıda alıştırma yapın

Bu sitenin makro ve GAS simülasyonunda sanal bir e-tablo ve Apps Script düzenleyicisinde gerçek kodu çalıştırarak alıştırma yaparsınız. Koddaki boşlukları doldurursunuz; telefonda her boşluğu dört seçenekten seçersiniz.

  1. Bölüm 1 Makro kaydetmek ve çalıştırmak

    Kaydedilmiş bir makroyu çalıştırın ve kendiniz de kaydedin. Mutlak ve göreli referanslar, kaydedilen kodu okumak ve düzeltmek.

  2. Bölüm 2 Okumak, tekrarlamak, ayırmak

    Hücreleri getValue ile okuyun, setValue ile yazın ve değerleri yürütme günlüğünde kontrol edin. for ile tüm satırları dolaşın, if ile ayırın.

  3. Bölüm 3 Vaka çalışması: aylık satış tablosunu düzenlemek

    Boş satırları silin, büyük satışları tek seferde işaretleyin ve hepsini kendi menünüzden çalıştırın. Son olarak hücreler için kendi fonksiyonunuz.

Simülasyona başla (13 görev) →

GAS nasıl öğrenilir

İyi bir başlangıç, kendi e-tablolarınızdan birinde “Makro kaydet”i kullanıp ortaya çıkan kodu okumaktır. Böylece her komutun ne yaptığı daha kolay görülür.

Kodu üretken yapay zekâ da yazabilir. Ama doğru olup olmadığına ve nereyi düzelteceğinize karar vermek için en azından bu yazıdaki “sık kullanılan kodları” okuyabilmeniz gerekir.

* Ekran adları ve sınırlar Ekim 2026 itibarıyladır; Google'ın güncellemeleriyle değişebilir.

* Google E-Tablolar, Google LLC'nin ticari markasıdır. Bu sitenin Google ile bir ilgisi yoktur.