SetValues, setValue'dan daha mı yavaş?

Aug 26 2020

Birden çok kişinin katkıda bulunduğu, Google Apps Komut Dosyası çalıştıran bir Google Dokümanım var. onEditİnsanlar sayfayı düzenlediğinde tetiklenen bir tetikleyici var. Anladığım kadarıyla, bir kişi sayfayı düzenlerse bu, onEdittetikleme işlevimi tetikler .

İkinci bir kişi, ilk işlemi onEditbitirmeden önce sayfayı düzenlerse, ilk örneği durdurur ve ikinci onEdit, birinciyi bitirmeden başlar.

Bundan kaçınmak için kodumu mümkün olduğunca verimli hale getirmeye çalışıyorum teorisi ile onEditsüreç daha az zaman alırsa çakışması daha az olasıdır. Bunu başarmak için okuma / yazmalarımı en aza indirmeye çalıştım. Bir dizi günlükçü ifadesi kullanarak, zaman alıcı olan kod satırlarını izledim. Hatlarımdan birinin setValues()çalışmasının neredeyse 6 saniye sürdüğünü fark ettim . Ben ayarlamalar yaptıktan sonra sayfaya geri gönderilen büyük bir dizi.

Sorularım:

  1. Bir setValues()çağrı, a'dan daha uzun sürer setValue()mi?
  2. Bir mu setValues()küçük dizinin çağrısı daha az zaman alır setValues()büyük bir dizinin?

setValues()1000 setValue()komuttan çok daha hızlı olacağını biliyorum .

Ebattan bağımsız olarak bir kağıda yazmanın yaklaşık olarak aynı süre alacağını varsaymıştım. Bu zamanı en aza indirmenin bir yolu var mı?

Yanıtlar

3 Tanaike Aug 27 2020 at 04:33

S1: a, setValues()a'dan daha uzun sürer setValue()mi?

A1: Hayır. Bununla ilgili, aşağıdaki deneysel sonuçtan görebilirsiniz.

S2: setValues()Küçük bir dizinin çağrılması, büyük bir dizinin çağrısından daha mı az zaman alır setValues()?

A2: Evet. Bununla ilgili, aşağıdaki deneysel sonuçtan görebilirsiniz.

S3: Ebattan bağımsız olarak kağıda yazılan birinin yaklaşık aynı süreyi alacağını varsaymıştım. Bu zamanı en aza indirmenin bir yolu var mı?

A3: Değerleri daha fazla koymak için süreç maliyetini azaltmak istediğinizde, E-Tablolar API'sini kullanmaya ne dersiniz? Bu konuyu "A2" şeklinde görebilirsiniz.

Not:

  • Yukarıdaki yanıtların mantığı Karşılaştırma: Google Apps Komut Dosyasını kullanarak Elektronik Tablo Okuma ve Yazma'dır .

  • As TheMaster yorumuna @ , ben de senin sorunun çözülebilir olabileceğini düşünmek LockService .

    • LockService'in örnek betiğinin stackoverflow'da görülebileceğini düşünüyorum. Referans