En İyi Uygulamalar

Bu dokümanda, performansınızı artırmanıza yardımcı olacak en iyi uygulamalar listelenmektedir sağlayabilir.

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

Komut dosyanızdaki JavaScript işlemlerini kullanmak, diğer hizmetleri aramak. Google Apps Komut Dosyası'nda gerçekleştirebileceğiniz her şey gereken çağrılar yapmaktan çok daha hızlı olacaktır. E-Tablolar, Dokümanlar veya E-Tablolar'a yapılan istekler gibi harici bir sunucuya Google Sites, Çeviri, UrlFetch vb. Mümkünse komut dosyalarınız daha hızlı çalışır komut dosyalarının bu hizmetlere yaptığı çağrıları en aza indirmenin yollarını bulmak.

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

Başka geliştiricilerle birlikte bir komut dosyası projesi üzerinde çalışıyorsanız ortak Drive'lar ile Apps Komut Dosyası projelerinde ortak çalışma yapabilirsiniz. Ortak drive'daki dosyaların sahibi kişilere değil, gruba aittir. Bu ve bakımını kolaylaştırır.

Toplu işlemleri kullanma

Komut dosyaları genellikle bir elektronik tablodaki verileri okumalı, hesaplamalar yapmalı, ve sonra verilerin sonuçlarını bir elektronik tabloya yazacağım. Google Apps Komut Dosyası'nda, bir komut dosyasının büyük olasılıkla alacağı verileri almak için önizleme önbelleğe alma ve büyük olasılıkla ayarlanacak verileri kaydetmek için yazma önbelleğe alma gibi bazı yerleşik optimizasyonlar zaten mevcuttur.

Yerleşik önbelleğe alma özelliğinden en iyi şekilde yararlanmak için komut dosyaları yazabilirsiniz. Böylece okuma ve yazma sayısını en aza indirir. 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 okuyup dizideki veriler üzerinde tüm işlemleri gerçekleştirebilir ve verileri bir komut kullanabilirsiniz.

Aşağıda, takip etmemeniz veya kullanmamanız gereken bir örnek verilmiştir. Senaryo aşağıdaki kodu kullanarak bir hücredeki her hücrenin arka plan renklerini 100 x 100 e-tablo ızgarası. Her hücre için hangi rengin kullanılacağını belirlemek üzere getColorFromCoordinates() adlı işlevi (burada gösterilmemiştir) 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ütunda döngü yapar ve art arda 10.000 hücreye oluşturulacaktır. Google Apps Komut Dosyası'ndaki geri yazma önbelleği, her satırın sonunda flush kullanılarak geri yazma işlemini zorunlu kıldığından faydalıdır. Önbelleğe alma nedeniyle E-Tablo'ya yalnızca 100 çağrı yapılır.

Ancak çağrılar gruplandırılarak kod çok daha verimli hale getirilebilir. Aşağıda, hücre aralığının colors adlı bir diziye okunduğu, renk atama işleminin dizindeki veriler üzerinde gerçekleştirildiği ve dizindeki değerlerin elektronik tabloya yazıldığı bir yeniden yazma örneği 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);

Verimli olmayan kodun çalışması yaklaşık 70 saniye sürer. Verimli kod, yalnızca 1 saniye!

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

Kütüphaneler, kodu yeniden kullanmanın kullanışlı bir yoludur ancak komut dosyasının başlatılması için gereken süreyi biraz artırır. Bu gecikme nispeten uzun süren komut dosyaları (örneğin, bir komut dosyası gibi) temizlemeniz gerekmez), ancak istemci tarafında HTML Hizmeti kullanıcı arayüzleri şunlardır: kısa süreli google.script.run bu gecikme her aramayı etkiler. Bu sorun nedeniyle, kitaplıklar eklentilerde az kullanılmalıdır. Ayrıca, çok sayıda google.script.run çağrısı yapan eklenti dışı komut dosyalarında kitaplıklardan kaçınabilirsiniz.

Ö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 getirmeniz gereken kez sayısını veya sıklığını azaltabilirsiniz. example.com'da 20 saniye süren bir RSS özet akışınızın olduğu senaryoyu düşünün. ve ortalama isteğe erişimi hızlandırmak istiyorsunuz. İlgili içeriği oluşturmak için kullanılan aşağıdaki örnekte, bu dosyaya erişimi hızlandırmak için Önbellek Hizmeti'nin nasıl kullanılacağı gösterilmektedir dışı verilerdir.

  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 öğenin önbellekten süresi dolana kadar (25 dakika) sonraki erişimler çok hızlı olur.