Apakah setValues lebih lambat dari setValue?
Saya memiliki Google Dokumen dengan skrip Skrip Google Apps yang sedang berjalan dan dapat disumbangkan oleh banyak orang. Ada onEditpemicu yang dipicu saat orang mengedit lembar. Seperti yang saya pahami, jika satu orang mengedit sheet, ini onEditmemicu fungsi pemicu saya .
Jika orang kedua mengedit lembar sebelum onEditpemrosesan selesai pertama maka itu menghentikan contoh pertama dan yang kedua onEditdimulai tanpa menyelesaikan yang pertama.
Untuk menghindari ini, saya mencoba membuat kode saya seefisien mungkin dengan teori bahwa jika onEditprosesnya memakan waktu lebih sedikit, kemungkinannya kecil untuk tumpang tindih. Untuk mencapai ini, saya mencoba meminimalkan baca / tulis saya. Menggunakan serangkaian pernyataan logger, saya telah melacak baris kode yang memakan waktu. Saya perhatikan bahwa salah satu setValues()baris saya membutuhkan waktu hampir 6 detik untuk dijalankan. Ini adalah array besar yang diposting kembali ke sheet setelah saya melakukan penyesuaian.
Pertanyaan saya:
- Apakah
setValues()panggilan membutuhkan waktu lebih lama dari satusetValue()? - Apakah
setValues()panggilan dari array kecil membutuhkan waktu lebih sedikit daripada panggilansetValues()dari array besar?
Saya tahu bahwa yang satu setValues()akan lebih cepat dari 1000 setValue()perintah.
Saya mengira satu menulis ke lembar harus memakan waktu yang sama berapa pun ukurannya. Adakah cara saya bisa meminimalkan waktu ini?
Jawaban
Q1: Apakah
setValues()waktu lebih lama dari asetValue()?
A1: Tidak. Mengenai hal ini, Anda bisa melihat dari hasil percobaan berikut.
T2: Apakah
setValues()panggilan dari array kecil membutuhkan waktu lebih sedikit daripada panggilansetValues()dari array besar?
A2: Ya. Mengenai hal ini, Anda bisa melihat dari hasil percobaan berikut.
T3: Saya mengira satu menulis ke lembar harus memakan waktu yang sama berapa pun ukurannya. Adakah cara saya bisa meminimalkan waktu ini?
A3: Jika Anda ingin mengurangi biaya proses untuk menempatkan nilai lebih banyak, bagaimana jika menggunakan Sheets API? Soal ini, Anda bisa melihatnya pada sosok "A2".
catatan:
Alasan jawaban diatas adalah Tolok Ukur: Membaca dan Menulis Spreadsheet menggunakan Google Apps Script .
Sebagai komentar @ TheMaster , saya juga berpikir bahwa masalah Anda mungkin diselesaikan oleh LockService .
- Saya pikir contoh skrip LockService dapat dilihat di stackoverflow. Ref