En İyi Uygulamalar

Bu belgede, komut dosyalarınızın performansını artırmanıza yardımcı olacak en iyi uygulamalar listelenmektedir.

Diğer hizmetlere yapılan çağrıları en aza indirme

Komut dosyanızda JavaScript işlemleri kullanmak, diğer hizmetleri çağırmaktan çok daha hızlıdır. Google Apps Komut Dosyası'nda yapabileceğiniz her şey, Google'ın sunucularından veya harici bir sunucudan veri getirmesi gereken çağrılar yapmaktan (ör. E-Tablolar, Dokümanlar, Sites, Çeviri, UrlFetch vb. istekleri) çok daha hızlıdır. Komut dosyalarınızın bu hizmetlere yaptığı çağrıları en aza indirmenin yollarını bulursanız komut dosyalarınız daha hızlı çalışır.

Ortak Drive'larda ortak çalışma

Diğer geliştiricilerle birlikte bir komut dosyası projesi üzerinde çalışıyorsanız paylaşılan sürücülerle Apps Komut Dosyası projelerinde ortak çalışabilirsiniz. Ortak Drive'daki dosyalar bireylere değil, gruba aittir. Bu, projenin geliştirilmesini ve bakımını kolaylaştırır.

Toplu işlemleri kullanma

Komut dosyaları genellikle bir e-tablodan veri okumalı, hesaplamalar yapmalı ve ardından verilerin sonuçlarını bir e-tabloya yazmalıdır. Google Apps Komut Dosyası'nda, komut dosyasının alması muhtemel olanı almak için ileriye dönük önbelleğe alma ve ayarlanması muhtemel olanı kaydetmek için yazma önbelleğe alma gibi bazı yerleşik optimizasyonlar zaten vardır.

Okuma ve yazma sayısını en aza indirerek yerleşik önbelleğe almadan en iyi şekilde yararlanmak için komut dosyaları yazabilirsiniz. Okuma ve yazma komutlarının dönüşümlü olarak kullanılması yavaştır. Bir komutla tüm verileri bir diziye okuyarak, dizideki veriler üzerinde tüm işlemleri gerçekleştirerek ve verileri tek bir komutla yazarak komut dosyasını hızlandırın.

Aşağıda, izlememeniz veya kullanmamanız gereken bir örnek verilmiştir. Bir komut dosyası, 100 x 100 boyutlu bir e-tablo ızgarasındaki her hücrenin arka plan rengini ayarlamak için aşağıdaki kodu kullanır. Her hücrede hangi rengin kullanılacağını belirlemek için getColorFromCoordinates() adlı bir işlev (burada gösterilmemiştir) kullanılır:

  // DO NOT USE THIS CODE. It is an example of SLOW, INEFFICIENT code.
  // FOR DEMONSTRATION ONLY
  var cell = sheet.getRange('a1');
  for (var y = 0; y < 100; y++) {
    xcoord = xmin;
    for (var x = 0; x < 100; x++) {
      var c = getColorFromCoordinates(xcoord, ycoord);
      cell.offset(y, x).setBackgroundColor(c);
      xcoord += xincrement;
    }
    ycoord -= yincrement;
    SpreadsheetApp.flush();
  }

Komut dosyası verimsizdir: 100 satır ve 100 sütun arasında döngü oluşturarak 10.000 hücreye art arda yazar. Google Apps Komut Dosyası geri yazma önbelleği, her satırın sonunda temizleme işlemi kullanarak geri yazmayı zorladığı için yardımcı olur. Önbelleğe alma nedeniyle, elektronik tabloya yalnızca 100 çağrı yapılır.

Ancak çağrıları gruplandırarak kod çok daha verimli hale getirilebilir. Aşağıda, hücre aralığının renkler adlı bir diziye okunduğu, dizideki veriler üzerinde renk atama işleminin gerçekleştirildiği ve dizideki değerlerin elektronik tabloya yazıldığı bir yeniden yazma işlemi verilmiştir:

  // OKAY TO USE THIS EXAMPLE or code based on it.
  var cell = sheet.getRange('a1');
  var colors = new Array(100);
  for (var y = 0; y < 100; y++) {
    xcoord = xmin;
    colors[y] = new Array(100);
    for (var x = 0; x < 100; x++) {
      colors[y][x] = getColorFromCoordinates(xcoord, ycoord);
      xcoord += xincrement;
    }
    ycoord -= yincrement;
  }
  sheet.getRange(1, 1, 100, 100).setBackgrounds(colors);

Verimsiz kodun çalışması yaklaşık 70 saniye sürer. Verimli kod yalnızca 1 saniyede çalışır.

Kullanıcı arayüzü yoğun komut dosyalarında kitaplık kullanmaktan kaçının

Kitaplıklar, kodu yeniden kullanmanın kolay bir yoludur ancak komut dosyasının başlatılması için gereken süreyi biraz uzatır. Bu gecikme, nispeten uzun süren komut dosyalarında (ör. Google Drive dosyalarınızı temizlemeye yönelik bir yardımcı program komut dosyası) fark edilmez ancak tekrarlanan, kısa süren google.script.run çağrıları yapan istemci tarafındaki HTML Hizmeti kullanıcı arayüzlerinde gecikme her çağrıyı etkiler. Bu sorun nedeniyle, eklentilerde kitaplıklar dikkatli bir şekilde kullanılmalıdır. Ayrıca, çok sayıda google.script.run çağrısı yapan eklenti olmayan komut dosyalarında kitaplık kullanmaktan kaçınmanız önerilir.

Önbellek hizmetini kullanma

Komut dosyası yürütmeleri arasında kaynakları önbelleğe almak için Cache Service'i kullanabilirsiniz. Verileri önbelleğe alarak verileri getirme sayısını veya sıklığını azaltabilirsiniz. example.com adresinde 20 saniyede getirilen bir RSS feed'iniz olduğunu ve ortalama istekte erişimi hızlandırmak istediğinizi düşünelim. Aşağıdaki örnekte, bu verilere erişimi hızlandırmak için önbellek hizmetinin nasıl kullanılacağı gösterilmektedir.

  function getRssFeed() {
    var cache = CacheService.getScriptCache();
    var cached = cache.get("rss-feed-contents");
    if (cached != null) {
      return cached;
    }
    // This fetch takes 20 seconds:
    var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml");
    var contents = result.getContentText();
    cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
    return contents;
  }

Öğe önbellekte değilse 20 saniye beklemeniz gerekir. Ancak öğe, 25 dakika içinde önbellekten kaldırılana kadar sonraki erişimler çok hızlı olur.