Google Apps Script Nedir? Ne Amaçla Kullanılır?

Excel ve Google E-Tablolar ile ilgili daha önce index, match, vlookup ve conditional formatting gibi temel bazı fonksiyonlara değinmiştim.

AA

Bahsi geçen bu ve ileride yayınlanacak ilgili diğer yazılar için spreadsheet kategorisini takip edebilirsiniz. Bu yazıda temel fonksiyonların biraz daha ötesine geçip, tablolar da dahil olmak üzere pek çok Google servisi ile entegre olarak işlemler gerçekleştirebileceğimiz Google Apps Script'e değinmek istiyorum.

Google Apps Script tarafından desteklenen uygulamalar

Google Apps Script

Google Apps Script (GAS), Google tarafından Google Workspace1 2 platformunda hafif uygulama geliştirme için geliştirilmiş bir komut dosyası oluşturma platformudur3. Google Apps Script, ilk olarak Mike Harm tarafından Google E-Tablolar'da geliştirici olarak çalışırken bir yan proje olarak geliştirilmiş ve sonrasında pek çok Google ürünü ile entegre olabilir bir yapı haline getirilmiştir4 5. Apps Script; HTML, CSS ve JavaScript'le uygulama oluşturmanıza olanak tanır6. Bu sayede, Google E-Tablolar, Dokümanlar, Slaytlar veya Formlar için eklentiler (add-ons) oluşturabilir, iş akışını otomatikleştir, Google ürünleri ile entegre API işlemleri gerçekleştirebiliriz.

Google Apps Script Editor

Ancak, JavaScript tarafında not düşmek gereken bir konu var. Apps Script kapsamında kullanılan JavaScript tam bir sürüm karşılığına sahip değil. İçeriğinde ağırlıklı olarak 1.6 ve 1.7 sürümleri ve 1.8.5 sürümü dahilindeki Object.keys, Object.isExtensible, String.trim, vb. özellikleri yer alır. Bu özelliklerin yanı sıra JSON ile E4X7 desteği de mevcuttur6. Diğer yandan, V8 Runtime da etkinleştirilerek kullanılabilmektedir8 9.

Geliştirilen kod *.gs uzantısı ile kayıt edilir. Bu kod web uygulaması, API çalıştırılabilir dosyası, eklenti olarak veya manifetten dağıtılabilir.

Avantajlar

  • Javascript 1.6 üzerine geliştirilmiştir. Ancak, 1.7 ve 1.8 sürümlerinden bazı özellikleri de içerir6. V8 Runtime seçeneği de mevcuttur10.
  • Web tarayıcısında Uygulama App Scripts hatalarını ayıklamak için bulut (cloud) tabanlı hata ayıklayıcı (debugger) kullanır.
  • Kolay bir şekilde pek çok Google servisi ve API ile ilişkilendirilebilir araçlar hazırlanabilir.
  • Basit sistem yönetimi görevlerini gerçekleştirmek için kullanılabilir.
  • Topluluk temelli destek modeline sahiptir.

Dikkat Edilmesi Gereken Hususlar

  • İşlem sınırlandırması vardır. Bulut tabanlı bir hizmet olan Apps Script, kullanıcının komut dosyasının çalışabileceği süreyi ve ayrıca Google hizmetlerine erişimini sınırlandırabilir.
  • Apps Script'e zaman içerisinde yeni özellikler eklenmektedir. Ancak, güncel durumda Apps Script ile dahili (behind-the-firewall) veritabanı, LDAP erişimi, vb. mümkün değildir. Diğer yandan, Google sunucularına izin verilmesi duurmunda, JDBC servisi kullanımıyla bu işlem gerçekleştirilebilir.
  • Apps Script bulut tabanlı olması sebebiyle tarih ve saatle ilgili işlevlerde saat dilimlerine bağlı olarak hesaplamalarda farklılıklar oluşturabilir. Bu nednele, Date/Time nesnelerini ve işlevlerini kontrollü bir şekilde yönetmek ve test etmek gerekir.

Kaynakça

Fundamentals of Apps Script with Google Sheets11 ile örnek bir işlem gerçekleştirebilir, Tutorials ile farklı örneklere ulaşabilirsiniz12, Ayrıca, Codelabs altında yer alan çeşitli örnek senaryolar dahilinde de problem odaklı ilerlemek mümkün13. Youtube tarafında işler biraz karışık. Videolar farklı kanallar üzerinden dağıtıldığı için hepsini bir akış içerisinde bulmak biraz zor olabiliyor. Ancak, Google Apps Script Video Library sayfası üzerinden belirli konularda üretilmiş başlangıç seviyesi video anlatımlarına ulaşmak mümkün14.

Son olarak, GitHub reposu üzerinden paylaşılan Apps Script samples (apps-script-samples) ile farklı Google servisleri ile ilişkili örnekleri görüntüleyebilir15 ve StockOverflow üzerinden de pek çok ilgili tartışma konusuna ulaşabilirsiniz16.

Hızlı bir şekilde kodlamaya başlamak için internet tarayıcınızın adres barına script.new yazmanız yeterli.

Hemen bir örnek ile konuyu pekiştirelim.

function formFunction(){
  let formCreate = FormApp.create('FormSample');
  formCreate.setIsQuiz(true);

  let forCorrect = FormApp.createFeedback()
  .setText("Correct")
  .build();

  let forIncorrect = FormApp.createFeedback()
  .setText("Incorrect")
  .build();

  let item = formCreate.addMultipleChoiceItem();

  item.setTitle("Greenwich'te tarih 12 Haziran 2006 Salı ve saat 23:30 iken 25 derece doğu boylamında bir yerde tarih ve saat nedir?")
  .setChoices([
    item.createChoice("12 Haziran 2006 Salı, saat 21:30", false),
    item.createChoice("11 Haziran 2006 Salı, saat 20:30", false),
    item.createChoice("13 Haziran 2006 Çarşamba, saat 01:10", true), // correct answer
    item.createChoice("12 Haziran 2006 Salı, saat 01:20", false)
  ])
  .showOtherOption(false);

  item.setRequired(true);
  item.setFeedbackForCorrect(forCorrect);
  item.setFeedbackForIncorrect(forIncorrect);
}

Yukarıdaki kod parçacığını tarayıcınızın adres barına script.google.com17 yazarak test edebilirsiniz.

formFunction çalıştırılacak fonksiyonumuzun adı. Bu fonksiyon içerisinde ilk olarak FormApp.create() ile bir Google Forms erişi gerçekleştiriyor ve bir form oluşturuyoruz18.

Her servis en az bir üst düzey global nesne sağlar; örneğin Form ürününe yalnızca FormApp, Gmail ürününe GmailApp nesnesiyle erişilebilir .

Var olan bir formu kullanmak isteseydik FormApp.openById('<form-id>') ile ilerleyebilirsin. Özetle, FormApp.create() her çağırıldığında bir form oluşturacaktır. setIsQuiz() ile form içeriğini belirtmiş oluruz.

Forms Service - Apps Script

forCorrect ve forIncorrect verilen cevap ile ilgili raporlar üzerinden veriler alabilmemizi sağlar. addMultipleChoiceItem ile soru tipini belirtmiş oluruz. item olarak belirtilen sorunun setTitle ile başlığı ve createChoice seçenekleri de oluşturulduktan sonra (doğru cevap true değerini alır) işlemlerimizi tamamlamış oluruz.

setRequired cevap zorunluluğunu sağlar. setFeedbackForCorrect ve setFeedbackForIncorrect ise az önce oluşturduğumuz forCorrect ve forIncorrect içeriklerini çağırmaktadır.

Fonksiyon çağırıldığında Google Forms19 içerisinde FormSample adında bir form oluşturacaktır.

Forms Service - Apps Script

Add-ons

Mart 2014'te Google, Dokümanlar (Docs) ve E-Tablolar (Sheets) için eklentileri (add-ons) kullanıma sundu. Bu sürecin hemen ardından Formlar (Forms) da desteklenen servisler arasına eklendi. Add-on'lar için, Apps Script üzerine inşa edilmiş özelleştirilebilir uygulamalar tanımı yapabiliriz20.

Add-on özelliği sayesinde kullanıcılar Google editörlerine e-posta birleştirme (mail-merging), iş akışları (workflows), diyagram oluşturucular (diagrams builders) gibi ekstra özellikler dahil edebilmekteler. Bu sayede, sıklıkla yinelenen görevleri otomatikleştirebilmekte ve/veya üçüncü taraf hizmetleri veya bilgileri Google Workspace'te kullanılabilir hale getirebilmekteyiz. Örneğin, MailChimp e-posta göndermek için MailChimp platformuyla iletişim kuran bir Google Dokümanlar eklentisine sahiptir4.

Eklentiler (add-on) ile gerçekleştirilebilecek işlemleri şu şekilde özetleyebiliriz:

  • Doğrudan Google Workspace uygulamalarına entegre edilmiş özelleştirilmiş kullanıcı arayüzleri (UI) oluşturabiliriz. Bu arayüzler aracılığı ile kullanıcıya çeşitli bilgiler sunabilir ve/veya kullanıcının bu bilgileri kontrol etmesini sağlayabiliriz.
  • Görevleri otomatikleştirerek veya bir düzene sokarak iş akışı (workflow) verimliliğini artırabiliriz.
  • Apps Script ile verileri Google servisleri arasında kolayca taşıyabilir ve kontrol edebiliriz.
  • Kullanıcıya ihtiyaç duyduğu her şeyi Google Workspace içinde gerçekleştirme imkanı sunabiliriz.
  • Google Workspace uygulamaları içerisinden Google dışı hizmetlere bağlanarak bu hizmetlerden Google Workspace'e veya Google Workspace içerisinden bu uygulamalara veri aktarabiliriz. Örneğin, REST API ile harici uygulamaları da eklenti sürecine dahil edebiliriz21.

Google Apps Script bize 2 türde eklenti geliştirme olanağı sunar; Google Workspace Add-ons ve Editor Add-ons. Bu iki tip arasındaki en temel farklılığı şu şekilde özetleyebiliriz; Google Workspace Add-ons ile pek çok Google servisi ile entegre edilebilen geliştirmeler yapmak mümkün iken Editor Add-ons ile sadece ilişkilendirilen Google servisi temelinde işlemler gerçekleştirilebilir22.

Google Apps Script ile ilgili yeni yazıları apps-script kategorisi aracılığı ile takip edebilirsiniz. İlerleyen süreçte özellikle E-Tablolar ve Google harici uygulamalar ile entegrasyon işlemleri temelinde örnekler paylaşmaya çalışacağım.