Masa Pemprosesan Lama: Menangani getValue() dan Sisipan sel
Dalam kod yang anda berikan, isu masa pemprosesan yang berlebihan berpunca daripada kerap penggunaan kaedah Range.getValue() dan Range.setValue() dalam gelung. Apabila skrip berpusing melalui setiap sel dalam lajur A, ia membaca dan menulis nilai berbilang kali, dengan ketara memperlahankan pelaksanaan.
Mengoptimumkan Kod
Untuk menangani prestasi ini isu, adalah penting untuk meminimumkan panggilan ke perkhidmatan, terutamanya tertumpu pada mengurangkan bilangan Range.getValue() dan Operasi Range.setValue(). Begini cara anda boleh mengoptimumkan kod anda:
Batch Batch
Daripada mendapatkan semula nilai setiap sel secara individu menggunakan range1.getValue(), baca nilai semua sel yang diperlukan dalam satu operasi kelompok. Contohnya, jika anda memerlukan nilai baris semasa dan tiga baris seterusnya, anda boleh menggunakan s.getRange(baris 1, 1, 4, 1).getValues() untuk mendapatkan kesemuanya sekali gus.
Tulisan Kelompok
Begitu juga, daripada menetapkan nilai sel individu, kumpulkan semua nilai yang perlu ditulis dan kemudian menetapkannya dalam satu operasi kelompok. Contohnya, jika anda ingin menulis nilai pada baris semasa dan tiga baris seterusnya, anda boleh menggunakan range1.offset(0, 0, 4).setValues([["data 1"], ["data 2"], ["data 3"], ["data 4"]]); untuk berbuat demikian.
Contoh Pengoptimuman
Berikut ialah versi kod anda yang dioptimumkan yang menggabungkan pengoptimuman ini:
function format() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var s = ss.getActiveSheet(); var lastRow = s.getRange("A:A").getLastRow(); var allValues = s.getRange(1, 1, lastRow, 1).getValues(); // Loop through all rows in the spreadsheet for (var row = 0; row < lastRow; row++) { var cellValue = allValues[row][0]; if (typeof cellValue === 'number') { continue; } } }
Dengan menggunakan pengoptimuman ini , anda boleh mengurangkan dengan ketara bilangan panggilan ke perkhidmatan dan meningkatkan prestasi skrip anda. Pendekatan ini mengurangkan bilangan panggilan ke perkhidmatan daripada 8 setiap gelung kepada hanya 2, mengakibatkan pengurangan ketara dalam masa pemprosesan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Skrip Google Apps untuk Mengurangkan Masa Pemprosesan Yang Lama Disebabkan oleh Panggilan `getValue()` dan `setValue()` yang Kerap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!