Rumah >hujung hadapan web >tutorial js >Mengapa Skrip Google Apps saya begitu perlahan dan bagaimana saya boleh mengoptimumkan penggunaan `getValues` dan `setValues`?

Mengapa Skrip Google Apps saya begitu perlahan dan bagaimana saya boleh mengoptimumkan penggunaan `getValues` dan `setValues`?

DDD
DDDasal
2024-12-01 03:05:14739semak imbas

Why is my Google Apps Script so slow, and how can I optimize `getValues` and `setValues` usage?

Masa Pemprosesan yang Lama Akibat Penggunaan getValues ​​dan setValues ​​yang Berlebihan

Isu:

Isu kod mengalami penggunaan berlebihan kaedah getValues ​​dan setValues, yang boleh memberi kesan ketara kepada masa pemprosesan, terutamanya untuk set data yang lebih besar.

Teknik Pengoptimuman:

Minimumkan Panggilan Perkhidmatan:

  • Elakkan panggilan yang tidak perlu ke perkhidmatan Skrip Google Apps. Sebaliknya, cache data secara setempat dan kendalikannya dalam skrip.

Caching Pandangan Ke Hadapan:

  • Skrip Google Apps menggunakan rupa terbina dalam -cache ke hadapan untuk mendapatkan semula data yang mungkin diperlukan.

Minimumkan Operasi Baca/Tulis:

  • Operasi baca dan tulis kelompok dengan mendapatkan dan memanipulasi data dalam tatasusunan. Ini mengurangkan bilangan panggilan ke pelayan.

Elakkan Baca/Tulis Bergantian:

  • Arahan baca dan tulis berselang-seli mengganggu caching pandang ke hadapan . Rancang operasi untuk meminimumkan corak berselang-seli ini.

Gunakan Tatasusunan:

  • Gunakan tatasusunan untuk menyimpan data dengan cekap. Dapatkan semula semua data ke dalam tatasusunan dengan satu panggilan getValues, laksanakan operasi padanya dan kemudian tulis semula dengan satu setValues ​​panggilan.

Contoh:

Pertimbangkan coretan kod berikut:

// Slow version: Alternating read and write operations
const sourceRange = SpreadsheetApp.getActiveSheet().getRange("A1:D2");
const targetRange = sourceRange.offset(2, 0);
for (let i = 0; i < sourceRange.getNumRows(); i++) {
  for (let j = 0; j < sourceRange.getNumColumns(); j++) {
    const value = sourceRange.getCell(i + 1, j + 1).getValue();
    targetRange.getCell(i + 1, j + 1).setValue(value);
  }
}

// Fast version: Batch read and write operations
const sourceValues = sourceRange.getValues();
targetRange.setValues(sourceValues);

Dengan membanding baca dan tulis operasi, coretan kod kedua mengurangkan dengan ketara bilangan panggilan ke perkhidmatan dan meningkatkan masa pemprosesan.

Atas ialah kandungan terperinci Mengapa Skrip Google Apps saya begitu perlahan dan bagaimana saya boleh mengoptimumkan penggunaan `getValues` dan `setValues`?. 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