Praktik Terbaik

Dokumen ini mencantumkan praktik terbaik yang akan membantu Anda meningkatkan performa skrip.

Minimalkan panggilan ke layanan lain

Menggunakan operasi JavaScript dalam skrip Anda jauh lebih cepat daripada memanggil layanan lain. Apa pun yang dapat Anda lakukan di dalam Google Apps Script akan jauh lebih cepat daripada melakukan panggilan yang perlu mengambil data dari server Google atau server eksternal, seperti permintaan ke Spreadsheet, Dokumen, Sites, Terjemahan, UrlFetch, dan sebagainya. Skrip Anda akan berjalan lebih cepat jika Anda dapat menemukan cara untuk meminimalkan panggilan yang dilakukan skrip ke layanan tersebut.

Pertimbangkan untuk berkolaborasi dengan drive bersama

Jika sedang mengerjakan project skrip dengan developer lain, Anda dapat berkolaborasi pada project Apps Script dengan drive bersama. File di drive bersama adalah milik grup, bukan milik individu. Hal ini memudahkan pengembangan dan pemeliharaan proyek.

Menggunakan operasi batch

Skrip biasanya perlu membaca data dari spreadsheet, melakukan penghitungan, lalu menulis hasilnya ke spreadsheet. Google Apps Skrip sudah memiliki beberapa pengoptimalan bawaan, seperti menggunakan cache lihat ke depan untuk mengambil apa yang mungkin akan didapatkan suatu skrip dan menulis cache untuk menyimpan hal yang mungkin akan ditetapkan.

Anda dapat menulis skrip untuk memanfaatkan penyimpanan cache bawaan dengan meminimalkan jumlah baca dan tulis. Perintah baca dan tulis yang bergantian menjadi lambat. Untuk mempercepat skrip, baca semua data ke dalam array dengan satu perintah, lakukan operasi apa pun pada data dalam array, dan tulis datanya dengan satu perintah.

Berikut contohnya — contoh yang tidak boleh Anda ikuti atau gunakan. Skrip menggunakan kode berikut untuk menetapkan warna latar belakang setiap sel dalam petak spreadsheet berukuran 100 x 100. Contoh ini digunakan sebagai fungsi bernama getColorFromCoordinates() (tidak ditampilkan di sini) guna menentukan warna yang akan digunakan untuk setiap sel:

  // 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 ini tidak efisien: membuat loop pada 100 baris dan 100 kolom, sehingga menulis ke 10.000 sel secara berurutan. Cache tulis balik Google Apps Script membantu, karena memaksa penulisan kembali menggunakan flush di akhir setiap baris. Karena cache dilakukan, hanya ada 100 panggilan ke Spreadsheet.

Namun, kode dapat dibuat jauh lebih efisien dengan mengelompokkan panggilan. Berikut adalah penulisan ulang saat rentang sel dibaca ke dalam array yang disebut warna, operasi penetapan warna dilakukan pada data dalam array, dan nilai dalam array dituliskan ke spreadsheet:

  // 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).setBackgroundColors(colors);

Kode yang tidak efisien membutuhkan waktu sekitar 70 detik untuk dijalankan. Kode yang efisien berjalan hanya dalam 1 detik!

Hindari library dalam skrip yang sarat UI

Library adalah cara yang mudah untuk menggunakan kembali kode, tetapi waktu yang diperlukan untuk memulai skrip sedikit meningkat. Penundaan ini tidak terlihat untuk skrip yang berjalan cukup lama (seperti skrip utilitas untuk membersihkan file Google Drive Anda), tetapi untuk antarmuka pengguna Layanan HTML sisi klien yang melakukan panggilan google.script.run berulang dan berjalan singkat, penundaan akan memengaruhi setiap panggilan. Karena masalah ini, library harus digunakan seperlunya dalam add-on, dan sebaiknya Anda menghindarinya dalam skrip non-add-on yang melakukan banyak panggilan google.script.run.

Menggunakan layanan Cache

Anda dapat menggunakan Layanan Cache untuk meng-cache resource di antara eksekusi skrip. Dengan meng-cache data, Anda dapat mengurangi frekuensi atau frekuensi pengambilan data. Pertimbangkan skenario saat Anda memiliki feed RSS di example.com yang memerlukan waktu 20 detik untuk diambil, dan Anda ingin mempercepat akses pada permintaan rata-rata. Contoh di bawah menunjukkan cara menggunakan Layanan Cache untuk mempercepat akses ke data ini.

  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;
  }

Sekarang, selagi Anda masih harus menunggu 20 detik jika item tidak ada dalam cache, akses berikutnya akan sangat cepat hingga item berakhir dari cache dalam 25 menit.