Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mengoptimumkan Skrip Google Apps untuk Mengurangkan Masa Pemprosesan Yang Lama Disebabkan oleh Panggilan `getValue()` dan `setValue()` yang Kerap?

Bagaimanakah Saya Boleh Mengoptimumkan Skrip Google Apps untuk Mengurangkan Masa Pemprosesan Yang Lama Disebabkan oleh Panggilan `getValue()` dan `setValue()` yang Kerap?

Susan Sarandon
Susan Sarandonasal
2024-12-08 09:00:23680semak imbas

How Can I Optimize Google Apps Script to Reduce Long Processing Times Caused by Frequent `getValue()` and `setValue()` Calls?

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn