En İyi Uygulamalar

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

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

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

Ortak Drive'larla ortak çalışma yapmayı düşünebilirsiniz.

Diğer geliştiricilerle bir komut dosyası projesi üzerinde çalışıyorsanız ortak Drive'lar ile Apps Komut Dosyası projelerinde ortak çalışabilirsiniz. Ortak drive'daki dosyaların sahibi kişilere değil, gruba aittir. Bu sayede projenin geliştirilmesi ve bakımı daha kolay hâle gelir.

Toplu işlemleri kullanma

Komut dosyalarının genellikle bir e-tablodaki verileri okuması, hesaplamalar yapması ve ardından verilerin sonuçlarını bir e-tabloya yazması gerekir. Google Apps Komut Dosyası'nda, bir komut dosyasının alma olasılığının yüksek olduğu öğeleri almak için önceden bakma önbelleğe alma ve ayarlanma olasılığı yüksek olan verileri kaydetmek için önbelleğe alma yazma gibi bazı yerleşik optimizasyonlar mevcuttur.

Okuma ve yazma sayısını en aza indirerek yerleşik önbelleğe alma özelliğinden en iyi şekilde yararlanmak için komut dosyaları yazabilirsiniz. Alternatif okuma ve yazma komutları yavaştır. Bir komut dosyasını hızlandırmak için tüm verileri tek bir komutla bir dizide okuyun, dizideki veriler üzerinde tüm işlemleri gerçekleştirin ve verileri tek bir komutla yazın.

İşte size bir örnek: İzlememeniz veya kullanmamanız gereken bir örnek. Komut dosyası, 100 x 100 boyutundaki bir e-tablo ızgarasındaki her hücrenin arka plan renklerini ayarlamak için aşağıdaki kodu kullanır. Her bir hücrenin hangi rengin kullanılacağını belirlemek için getColorFromCoordinates() adlı bir işlev (burada gösterilmez) olarak 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ütunda döngüden geçer ve art arda 10.000 hücreye yazar. Google Apps Komut Dosyası geri yazma önbelleği, her satırın sonunda boşaltma kullanarak geri yazma işlemini zorunlu kıldığı için yardımcı olur. Önbelleğe alma nedeniyle, E-tabloda yalnızca 100 çağrı olur.

Ancak çağrıları toplu hale getirerek kodu çok daha verimli hale getirebilirsiniz. Hücre aralığının renkler adlı bir diziye okunduğu, renk atama işleminin dizideki veriler üzerinde yürütüldüğü ve dizideki değerlerin e-tabloya yazıldığı bir yeniden yazma işlemini aşağıda görebilirsiniz:

  // 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).setBackgroundColors(colors);

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

Kullanıcı arayüzü ağırlıklı komut dosyalarında kitaplıklardan kaçının

Kitaplıklar, kodu yeniden kullanmanın kullanışlı bir yoludur, ancak komut dosyasını başlatmak için gereken süreyi biraz artırır. Bu gecikme nispeten uzun süren komut dosyalarında (Google Drive dosyalarınızı temizlemek için kullanılan bir yardımcı program komut dosyası gibi) fark edilmez. Ancak tekrarlanan, kısa süreli google.script.run çağrıları yapan istemci tarafı HTML Hizmeti kullanıcı arayüzlerinde gecikme her çağrıyı etkiler. Bu sorun nedeniyle, kitaplıklar eklentilerde ölçülü bir şekilde kullanılmalıdır. Ayrıca, çok sayıda google.script.run çağrısı yapan eklenti olmayan komut dosyalarında bunlardan kaçınmak isteyebilirsiniz.

Önbellek hizmetini kullanma

Komut dosyası yürütme işlemleri arasındaki kaynakları önbelleğe almak için Önbellek Hizmeti'ni kullanabilirsiniz. Verileri önbelleğe alarak, veri getirme işlemi sayısını veya sıklığını azaltabilirsiniz. example.com'da getirmesi 20 saniye süren bir RSS özet akışınız olduğu ve ortalama istekte erişimi hızlandırmak istediğiniz senaryoyu düşünün. Aşağıdaki örnekte, bu verilere erişimi hızlandırmak için Önbellek Hizmeti'nin 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;
  }

Şimdi, öğe önbellekte değilse 20 saniye beklemeniz gerekse de sonraki erişimler, öğenin süresi 25 dakika içinde önbellekten geçene kadar çok hızlı olacaktır.