Tips

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

Meminimalkan panggilan ke layanan lain

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

Pertimbangkan untuk berkolaborasi menggunakan drive bersama

Jika Anda sedang mengerjakan proyek skrip dengan pengembang lain, Anda bisa berkolaborasi di project Apps Script dengan drive bersama. File di drive bersama adalah milik grup, bukan perorangan. Ini membuat pengembangan dan pemeliharaan proyek menjadi lebih mudah.

Menggunakan operasi batch

Skrip biasanya perlu membaca data dari {i>spreadsheet<i}, melakukan perhitungan, dan kemudian menulis hasil datanya ke {i>spreadsheet<i}. Aplikasi Google Skrip sudah memiliki beberapa pengoptimalan bawaan, seperti menggunakan cache pratinjau untuk mendapatkan apa yang kemungkinan diperoleh skrip dan menulis {i>caching<i} untuk menyimpan apa yang kemungkinan besar.

Anda bisa menulis skrip untuk mendapatkan manfaat {i>caching<i} bawaan, dengan sehingga meminimalkan jumlah operasi baca dan tulis. Perintah baca dan tulis yang bergantian berjalan lambat. Untuk mempercepat skrip, baca semua data ke dalam array dengan satu perintah, melakukan operasi apa pun pada data dalam {i>array<i}, dan menulis datanya dengan satu perintah.

Berikut ini contohnya — contoh yang tidak boleh Anda ikuti atau gunakan. Naskah menggunakan kode berikut untuk menetapkan warna latar belakang setiap sel dalam Ukuran {i>spreadsheet<i} 100 x 100. Ini digunakan sebagai fungsi bernama getColorFromCoordinates() (tidak ditampilkan di sini) untuk 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 tidak efisien: skrip berulang melalui 100 baris dan 100 kolom, menulis berurutan menjadi 10.000 sel. Cache write-back Google Apps Script membantu, karena metode itu memaksa {i>write-back<i} menggunakan {i> flush<i} di akhir setiap baris. Karena cache, hanya ada 100 panggilan ke {i>Spreadsheet<i}.

Namun, kode tersebut dapat dibuat jauh lebih efisien dengan mengelompokkan panggilan. Berikut adalah menulis ulang di mana rentang sel dibaca ke dalam {i>array<i} yang disebut warna, warna dilakukan pada data dalam himpunan, dan nilai dalam himpunan tersebut ditulis ke {i>spreadsheet<i}:

  // 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 ini memerlukan waktu sekitar 70 detik untuk dijalankan. Kode yang efisien berjalan di hanya 1 detik!

Menghindari library dalam skrip yang menggunakan banyak UI

Library adalah cara mudah untuk menggunakan kembali kode, tetapi mereka sedikit menambah waktu yang dibutuhkan untuk memulai skrip. Keterlambatan ini tidak terlihat untuk skrip yang berjalan relatif lama (seperti skrip utilitas untuk membersihkan file Google Drive Anda), tetapi untuk sisi klien Antarmuka pengguna Layanan HTML yang berulang, berdurasi singkat google.script.run panggilan, penundaan akan mempengaruhi setiap panggilan. Karena masalah ini, library digunakan dengan hemat dalam add-on, dan Anda mungkin ingin 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 menyimpan data dalam {i>cache<i}, Anda dapat mengurangi berapa kali atau frekuensi Anda harus mengambil data. Pertimbangkan skenario ketika Anda memiliki feed RSS di example.com yang menggunakan 20 detik untuk mengambil, dan Anda ingin mempercepat akses pada permintaan rata-rata. Tujuan contoh di bawah ini menunjukkan cara menggunakan Layanan Cache untuk mempercepat akses ke layanan otomatis dan data skalabel.

  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, sementara Anda masih harus menunggu 20 detik jika item tidak ada dalam {i>cache<i}, akses berikutnya akan berjalan sangat cepat hingga item keluar dari cache dalam 25 menit.