SetValues, setValue'dan daha mı yavaş?
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:
- Bir
setValues()çağrı, a'dan daha uzun sürersetValue()mi? - Bir mu
setValues()küçük dizinin çağrısı daha az zaman alırsetValues()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
S1: a,
setValues()a'dan daha uzun sürersetValue()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ırsetValues()?
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