En İyi Uygulamalar

Bu belgede, komut dosyası performansını artırmaya yönelik 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 daha hızlıdır. Google Apps Komut Dosyası'nda yaptığınız her şey, Google'ın sunucularından veya harici bir sunucudan veri getirmekten daha hızlıdır. Örneğin, E-Tablolar, Dokümanlar, Sites, Çeviri ve UrlFetch'e yapılan istekler. Hizmet çağrılarını en aza indirirseniz komut dosyalarınız daha hızlı çalışır.

Ortak Drive'larla ortak çalışma

Diğer geliştiricilerle birlikte bir komut dosyası projesi üzerinde çalışıyorsanız ortak Drive'ları kullanarak ortak çalışma yapın. Ortak Drive'daki dosyalar bireylere değil gruba aittir. Bu sayede proje geliştirme ve bakım işlemleri kolaylaşır.

Toplu işlemleri kullanma

Komut dosyaları genellikle bir e-tablodan veri okur, hesaplamalar yapar ve sonuçları geri yazar. Apps Komut Dosyası, look-ahead ve yazma önbelleği gibi yerleşik optimizasyon özelliklerini kullanır.

Okuma ve yazma işlemlerini en aza indirerek yerleşik önbelleğe almayı en üst düzeye çıkarın. Okuma ve yazma komutlarının dönüşümlü olarak kullanılması yavaştır. Bir komut dosyası çalıştırmayı hızlandırmak için tüm verileri tek bir komutla diziye okuyun, dizi verileri üzerinde işlemler gerçekleştirin ve verileri tek bir komutla yazın.

Okuma ve yazma işlemlerini bu verimsiz örnekte gösterildiği gibi dönüşümlü olarak yapmaktan kaçının:

// 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ı,art arda yazma işlemleriyle 10.000 hücrede döngü oluşturduğu için verimli değil. Geri yazma önbelleği yardımcı olsa da çağrıları gruplandırmak çok daha verimlidir:

// 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ürerken verimli kodun çalışması yalnızca 1 saniye sürer.

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

Kitaplıklar, kodu yeniden kullanmak için uygundur ancak komut dosyası başlatma süresini artırır. Bu gecikme, istemci tarafındaki HTML Hizmeti kullanıcı arayüzlerinde fark edilir. Bu arayüzler, kısa süren google.script.run çağrılarını tekrar tekrar yapar. Eklentilerde kitaplıkları dikkatli bir şekilde kullanın ve çok sayıda google.script.run çağrısı yapan komut dosyalarında kitaplık kullanmaktan kaçının.

Önbellek hizmetini kullanma

Komut dosyası yürütmeleri arasında kaynakları önbelleğe almak için önbellek hizmetini kullanın. Önbelleğe alma, veri getirme sıklığını azaltır. Aşağıdaki örnekte, yavaş bir RSS özet akışına 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. Öğe süresi dolana kadar sonraki erişimler hızlı olur.