En İyi Uygulamalar

Bu dokümanda, 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 indirin

Komut dosyanızda JavaScript işlemleri kullanmak, diğer hizmetleri çağırmaya kıyasla çok daha hızlıdır. Google Apps Komut Dosyası'nın içinde yapabildiğiniz her şey, Google'ın sunucularından veya harici bir sunucudan veri getirmesi gereken çağrılardan (ör. E-Tablolar, Dokümanlar, Sites, Çeviri, UrlFetch vb.) yapılan çağrılardan ç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üşünün

Diğer geliştiricilerle bir komut dosyası projesi üzerinde çalışıyorsanız Apps Komut Dosyası projelerinde ortak Drive'larla 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ı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ı, bir komut dosyasının alabileceğini almak için ileriye dönük önbelleğe alma özelliğini kullanmak ve ayarlanma olasılığı yüksek olanları kaydetmek için önbelleğe almayı yazmak gibi bazı yerleşik optimizasyonlara zaten sahiptir.

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

Bir örneği aşağıda bulabilirsiniz. Takip etmemeniz veya kullanmamanız gereken bir örnektir. Komut dosyası, 100x100 boyutundaki e-tablo ızgarasındaki her hücrenin arka plan renklerini ayarlamak için aşağıdaki kodu kullanır. Her bir hücrede hangi rengin kullanılacağını belirlemek için getColorFromCoordinates() (burada gösterilmemiştir) adlı işlev olarak kullanı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şturur ve art arda 10.000 hücreye yazılır. Google Apps Komut Dosyası geri yazma önbelleği yardımcı olur, çünkü her satırın sonunda temizleme işlemini kullanarak geri yazmaya zorlar. Önbelleğe alma nedeniyle E-tabloya yalnızca 100 çağrı yapılır.

Ancak çağrılar toplu hale getirilerek kod çok daha verimli hale getirilebilir. Aşağıda, hücre aralığının renkler adı verilen bir diziye okunduğu, renk atama işleminin dizideki veriler üzerinde gerçekleştirildiği ve dizideki değerlerin e-tabloya yazıldığı bir yeniden yazmayı 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 saniye içinde çalışır.

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

Kitaplıklar, kodu yeniden kullanmanın kolay bir yoludur ancak komut dosyasını başlatmak için gereken süreyi biraz artırır. Bu gecikme, nispeten uzun süre çalışan komut dosyaları (ör. Google Drive dosyalarınızı temizlemek için bir yardımcı program komut dosyası) için fark edilmez ancak tekrarlanan, kısa 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 tutumlu bir şekilde kullanılmalıdır ve çok sayıda google.script.run çağrısı yapan eklenti olmayan komut dosyalarında bunları kullanmaktan kaçınmak isteyebilirsiniz.

Önbellek hizmetini kullanma

Komut dosyası yürütme işlemleri arasında kaynakları önbelleğe almak için Önbellek Hizmeti'ni kullanabilirsiniz. Verileri önbelleğe alarak verileri getirme sıklığını veya sıklığını azaltabilirsiniz. example.com adresinde getirilmesi 20 saniye süren bir RSS özet akışınız olduğunu ve ortalama istekle erişimi hızlandırmak istediğinizi 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;
  }

Öğe önbellekte değilse yine de 20 saniye beklemeniz gerekse de, sonraki erişimler öğenin 25 dakika içinde önbellekten süresi dolana kadar çok hızlı olur.