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'larda birlikte ç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.

Büyük veri kümeleri ve karmaşık hesaplamalar

Google E-Tablolar güçlü bir araçtır ancak veri kümeleri büyüdükçe ve hesaplamalar daha karmaşık hale geldikçe e-tablo gecikmesi, IMPORTRANGE hataları ve komut dosyası zaman aşımları gibi performans sorunlarıyla karşılaşabilirsiniz.

Veritabanı ne zaman kullanılır?

E-tablonuz 10 milyon hücre sınırına yaklaşıyorsa veya çok sayıda bağlı formunuz (ör. 10 veya daha fazla) ve karmaşık sayfalar arası formülleriniz varsa özel bir veritabanı çözümü kullanmayı düşünebilirsiniz.

  • Google Cloud SQL: MySQL, PostgreSQL ve SQL Server için tümüyle yönetilen bir ilişkisel veritabanı hizmetidir. Cloud SQL'e veya Oracle ya da MongoDB gibi diğer harici veritabanlarına (uygun köprüler aracılığıyla) bağlanmak için JDBC hizmetini kullanın.
  • BigQuery: Sunucusuz ve yüksek düzeyde ölçeklenebilir bir veri ambarı. Büyük BigQuery veri kümelerini doğrudan E-Tablolar'da analiz etmek için Bağlı sayfalar'ı veya Apps Komut Dosyası'ndaki verilerle etkileşim kurmak için BigQuery hizmetini kullanabilirsiniz.

Formül performansı optimizasyonu

Belirli formüllerin yoğun kullanımı e-tablonuzu yavaşlatabilir:

  • ARRAYFORMULA: Kullanışlı olsa da büyük ölçekli ARRAYFORMULA hesaplamaları maliyetli olabilir.
  • DÜŞEYARA ve KAYDIR: Bu işlevler, büyük veri kümelerinde yavaş olabilir. Bellekte daha verimli aramalar yapmak için INDEX ve MATCH veya Apps Komut Dosyası'nı kullanabilirsiniz.
  • IMPORTRANGE: IMPORTRANGE işlevinin birçok sayfada sık kullanılması, kaynak sayfalar büyükse veya yoğun yük altındaysa "İç Hatalara" yol açabilir. Verileri merkezi bir kaynakta birleştirmek yardımcı olabilir.

Komut dosyası zaman aşımı işleme

Apps Komut Dosyası'nın yürütme süresi sınırları vardır (genellikle yürütme başına 6 dakika veya bazı Google Workspace hesapları için 30 dakika). Komut dosyanız, yürütme sınırını aştığı için sık sık kilitleniyorsa:

  1. Toplu işlemleri kullanın: Toplu işlemleri kullanma bölümünde belirtildiği gibi, e-tablolara ve diğer hizmetlere yapılan çağrıları en aza indirin.
  2. Görevleri bölme: Büyük görevleri, her biri zaman sınırı içinde tamamlanabilecek daha küçük parçalara ayırın.
  3. Devam ettirme için tetikleyicileri kullanma: Uzun süren bir işleme devam etmek için yüklenebilir zamana dayalı bir tetikleyici ayarlayın. Komut dosyanız, Properties hizmetini kullanarak mevcut durumunu (ör. son işlenen satır dizini) saklayabilir ve sonraki yürütmede bu noktadan devam edebilir.