Praktik Terbaik

Dokumen ini mencantumkan praktik terbaik untuk meningkatkan performa skrip.

Meminimalkan panggilan ke layanan lain

Menggunakan operasi JavaScript dalam skrip Anda lebih cepat daripada memanggil layanan lain. Apa pun yang Anda selesaikan dalam Google Apps Script itu sendiri lebih cepat daripada mengambil data dari server Google atau server eksternal, seperti permintaan ke Spreadsheet, Dokumen, Sites, Terjemahan, dan UrlFetch. Skrip Anda akan berjalan lebih cepat jika Anda meminimalkan panggilan layanan.

Berkolaborasi dengan drive bersama

Jika Anda mengerjakan proyek skrip dengan developer lain, berkolaborasilah menggunakan drive bersama. File di drive bersama dimiliki oleh grup, bukan individu, sehingga mempermudah pengembangan dan pemeliharaan project.

Menggunakan operasi batch

Skrip biasanya membaca data dari spreadsheet, melakukan perhitungan, dan menulis kembali hasilnya. Apps Script menggunakan pengoptimalan bawaan seperti look-ahead dan penulisan cache.

Maksimalkan caching bawaan dengan meminimalkan operasi baca dan tulis. Perintah baca dan tulis yang bergantian lambat. Untuk mempercepat skrip, baca semua data ke dalam array dengan satu perintah, lakukan operasi pada data array, dan tulis data dengan satu perintah.

Hindari membaca dan menulis secara bergantian seperti yang ditunjukkan dalam contoh tidak efisien ini:

// DO NOT USE THIS CODE. It is an example of SLOW, INEFFICIENT code.
// FOR DEMONSTRATION ONLY
var cell = sheet.getRange('a1');
for (var y = 0; y < 100; y++) {
  xcoord = xmin;
  for (var x = 0; x < 100; x++) {
    var c = getColorFromCoordinates(xcoord, ycoord);
    cell.offset(y, x).setBackgroundColor(c);
    xcoord += xincrement;
  }
  ycoord -= yincrement;
  SpreadsheetApp.flush();
}

Skrip tidak efisien karena melakukan loop pada 10.000 sel dengan penulisan berurutan. Meskipun cache tulis balik membantu, pengelompokan panggilan jauh lebih efisien:

// OKAY TO USE THIS EXAMPLE or code based on it.
var cell = sheet.getRange('a1');
var colors = new Array(100);
for (var y = 0; y < 100; y++) {
  xcoord = xmin;
  colors[y] = new Array(100);
  for (var x = 0; x < 100; x++) {
    colors[y][x] = getColorFromCoordinates(xcoord, ycoord);
    xcoord += xincrement;
  }
  ycoord -= yincrement;
}
sheet.getRange(1, 1, 100, 100).setBackgrounds(colors);

Kode yang tidak efisien membutuhkan waktu sekitar 70 detik untuk dijalankan, sedangkan kode yang efisien hanya membutuhkan waktu 1 detik.

Hindari library dalam skrip yang berat UI-nya

Library berguna untuk menggunakan kembali kode, tetapi meningkatkan waktu startup skrip. Penundaan ini terlihat di antarmuka pengguna Layanan HTML sisi klien yang melakukan panggilan google.script.run berulang dan berdurasi singkat. Gunakan library dengan hemat di add-on dan hindari penggunaannya dalam skrip yang melakukan banyak panggilan google.script.run.

Menggunakan layanan Cache

Gunakan Layanan cache untuk menyimpan dalam cache resource di antara eksekusi skrip. Caching mengurangi frekuensi pengambilan data. Contoh berikut menunjukkan cara menggunakan layanan Cache untuk mempercepat akses ke feed RSS yang lambat.

function getRssFeed() {
  var cache = CacheService.getScriptCache();
  var cached = cache.get("rss-feed-contents");
  if (cached != null) {
    return cached;
  }
  // This fetch takes 20 seconds:
  var result = UrlFetchApp.fetch("http://example.com/my-slow-rss-feed.xml");
  var contents = result.getContentText();
  cache.put("rss-feed-contents", contents, 1500); // cache for 25 minutes
  return contents;
}

Meskipun Anda masih menunggu 20 detik jika item tidak ada dalam cache, akses berikutnya akan cepat hingga item berakhir.