Pemecahan masalah

Developer yang paling berpengalaman pun jarang menulis kode dengan benar pada percobaan pertama, sehingga pemecahan masalah merupakan bagian penting dari proses pengembangan. Pada bagian ini kita akan membahas beberapa teknik yang dapat membantu Anda menemukan, memahami, dan men-debug error dalam skrip.

Pesan error

Jika skrip mengalami error, pesan error akan ditampilkan. Pesan ini disertai dengan nomor baris yang digunakan untuk memecahkan masalah. Ada dua jenis error dasar yang ditampilkan dengan cara ini: error sintaksis dan error runtime.

Error sintaksis

Error sintaks disebabkan oleh penulisan kode yang tidak mengikuti tata bahasa JavaScript, dan error akan terdeteksi segera setelah Anda mencoba menyimpan skrip. Misalnya, cuplikan kode berikut berisi error sintaksis:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ";
  MailApp.sendEmail('john@example.com',
                    'Data in row ' + rowNumber,
                    rowData);
}

Masalah sintaksis di sini adalah karakter ) yang hilang di akhir baris keempat. Saat mencoba menyimpan skrip, Anda akan mendapatkan error berikut:

Tak ada ) sesudah daftar argumen. (baris 4)

Jenis error ini biasanya mudah untuk dipecahkan karena dapat langsung ditemukan dan biasanya memiliki penyebab yang sederhana. Anda tidak dapat menyimpan file yang berisi error sintaksis, yang berarti hanya kode valid yang disimpan ke dalam project Anda.

Error runtime

Error ini disebabkan oleh penggunaan fungsi atau class secara tidak benar, dan hanya dapat dideteksi setelah skrip dijalankan. Misalnya, kode berikut menyebabkan error runtime:

function emailDataRow(rowNumber) {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var rowData = data[rowNumber-1].join(" ");
  MailApp.sendEmail('john',
                    'Data in row ' + rowNumber,
                    rowData);
}

Kode diformat dengan benar, tetapi kita meneruskan nilai "john" untuk alamat email saat memanggil MailApp.sendEmail. Karena alamat email ini tidak valid, error berikut akan ditampilkan saat menjalankan skrip:

Email tidak valid: john (baris 5)

Masalah ini lebih sulit untuk dipecahkan karena sering kali data yang Anda teruskan ke fungsi tidak ditulis dalam kode, melainkan diambil dari spreadsheet, formulir, atau sumber data eksternal lainnya. Menggunakan teknik proses debug di bawah dapat membantu Anda mengidentifikasi penyebab error ini.

Error yang biasa terjadi

Di bawah ini adalah daftar error umum dan penyebabnya.

Layanan terlalu sering dipanggil: <action name>

Error ini menunjukkan bahwa Anda telah melebihi kuota harian untuk tindakan tertentu. Misalnya, Anda mungkin mengalami error ini jika Anda mengirim terlalu banyak email dalam satu hari. Kuota ditetapkan pada tingkat yang berbeda untuk akun konsumen, domain, dan premier, serta dapat berubah kapan saja tanpa pengumuman sebelumnya oleh Google. Anda dapat melihat batas kuota untuk berbagai tindakan dalam dokumentasi kuota Apps Script.

Server tidak tersedia. atau Terjadi error server, coba lagi.

Ada beberapa kemungkinan penyebab error ini:

  • Server atau sistem Google tidak tersedia untuk sementara. Tunggu beberapa saat dan coba jalankan kembali skrip.
  • Terjadi error dalam skrip Anda yang tidak memiliki pesan error yang sesuai. Coba lakukan debug skrip dan lihat apakah Anda dapat mengisolasi masalahnya.
  • Ada bug di Google Apps Script yang menyebabkan error ini. Untuk mengetahui petunjuk tentang cara menelusuri dan mengajukan laporan bug, lihat Bug. Sebelum melaporkan {i>bug<i} baru, cari tahu apakah orang lain telah melaporkannya.

Otorisasi diperlukan untuk melakukan tindakan itu.

Error ini menunjukkan bahwa skrip tidak memiliki otorisasi yang diperlukan untuk dijalankan. Saat skrip dijalankan di Editor Skrip atau dari item menu kustom, dialog otorisasi akan ditampilkan kepada pengguna. Namun, jika skrip dijalankan dari pemicu, disematkan dengan halaman Google Sites, atau dijalankan sebagai layanan, dialog tidak dapat ditampilkan dan error ini akan ditampilkan.

Untuk memberikan otorisasi pada skrip, buka Editor Skrip dan jalankan fungsi apa pun. Permintaan otorisasi akan muncul sehingga Anda dapat mengizinkan project skrip. Jika skrip berisi layanan baru yang tidak sah, Anda harus mengizinkan ulang skrip.

Error ini sering kali disebabkan oleh pemicu yang diaktifkan sebelum pengguna memberi otorisasi. Jika Anda tidak memiliki akses ke project skrip (misalnya karena terjadi error untuk add-on yang digunakan), biasanya Anda dapat mengizinkan skrip dengan menggunakan add-on lagi. Jika pemicu terus diaktifkan dan menyebabkan error ini, Anda dapat menghapus pemicu dengan melakukan hal berikut:

  1. Di sebelah kiri project Apps Script, klik Triggers .
  2. Di sebelah kanan pemicu yang ingin Anda hapus, klik Lainnya > Hapus pemicu.

Anda juga dapat menghapus pemicu add-on yang bermasalah dengan meng-uninstal add-on.

Akses ditolak: DriveApp atau Kebijakan domain telah menonaktifkan aplikasi Drive pihak ketiga

Administrator Google Workspace domain memiliki kemampuan untuk menonaktifkan Drive API untuk domain mereka, yang mencegah pengguna menginstal dan menggunakan aplikasi Google Drive. Setelan ini juga mencegah pengguna menggunakan add-on Apps Script yang menggunakan layanan Drive atau Layanan Drive Lanjutan (meskipun jika skrip telah diberi otorisasi sebelum admin menonaktifkan Drive API).

Namun, jika add-on atau aplikasi web yang menggunakan layanan Drive dipublikasikan untuk penginstalan di seluruh domain dan diinstal oleh administrator untuk sebagian atau semua pengguna di domain, skrip akan berfungsi untuk pengguna tersebut meskipun Drive API dinonaktifkan dalam domain.

Skrip tidak memiliki izin untuk mendapatkan identitas pengguna aktif.

Menunjukkan bahwa identitas dan email pengguna aktif tidak tersedia untuk skrip. Peringatan ini dihasilkan dari panggilan ke Session.getActiveUser(). Hal ini juga dapat dihasilkan dari panggilan ke Session.getEffectiveUser() jika skrip berjalan dalam mode otorisasi selain AuthMode.FULL. Jika peringatan ini diberi sinyal, panggilan berikutnya ke User.getEmail() hanya akan menampilkan "".

Ada sejumlah cara untuk memecahkan masalah peringatan ini, bergantung pada mode otorisasi tempat skrip berjalan. Mode otorisasi ditampilkan dalam fungsi yang dipicu sebagai properti authMode dari parameter peristiwa e.

  • Dalam AuthMode.FULL, pertimbangkan untuk menggunakan Session.getEffectiveUser() sebagai gantinya.
  • Di AuthMode.LIMITED, pastikan pemilik telah mengizinkan skrip.
  • Dalam mode otorisasi lainnya, hindari memanggil salah satu metode.
  • Jika Anda adalah Google Workspace pelanggan yang baru mengalami peringatan ini dari pemicu yang dapat diinstal, pastikan pemicu berjalan sebagai pengguna dalam organisasi Anda.

Koleksi tidak ada

Jika menambahkan library populer ke skrip, Anda mungkin menerima pesan error yang menyatakan bahwa library tersebut tidak ada, meskipun library tercantum sebagai dependensi untuk skrip Anda. Penyebabnya mungkin terlalu banyak orang yang mengakses library secara bersamaan. Untuk menghindari error ini, coba salah satu solusi berikut:

  • Salin dan tempel kode library ke skrip Anda dan hapus dependensi library.
  • Salin skrip library dan deploy sebagai library dari akun Anda. Pastikan untuk mengupdate dependensi dalam skrip asli Anda ke library baru, bukan ke library publik.

Terjadi error karena versi deployment atau versi library tidak ada. Kode error Tidak_Ditemukan

Pesan error ini menunjukkan salah satu hal berikut:

  • Versi skrip yang di-deploy telah dihapus. Untuk mengupdate versi skrip yang di-deploy, lihat Mengedit deployment berversi.
  • Versi library yang digunakan skrip telah dihapus. Untuk memeriksa library yang tidak ada, di samping nama library, klik Lainnya > Buka di tab baru. Library yang hilang akan memberikan pesan error. Setelah menemukan library yang perlu diupdate, lakukan salah satu tindakan berikut:
  • Skrip library yang digunakan skrip Anda menyertakan library lain yang menggunakan versi yang telah dihapus. Lakukan salah satu tindakan berikut:
    • Jika Anda memiliki akses edit ke library yang digunakan skrip, update library sekunder dalam skrip tersebut ke versi yang sudah ada.
    • Update library untuk menggunakan versi lain. Lihat Mengupdate library.
    • Hapus library dari kode dan project skrip Anda. Lihat Menghapus library.

Error 400: invalid_scope saat memanggil Google Chat API dengan layanan lanjutan

Jika Anda menemukan Error 400: invalid_scope dengan pesan error Some requested scopes cannot be shown, artinya Anda belum menentukan cakupan otorisasi apa pun dalam file appsscript.json project Apps Script. Pada umumnya, Apps Script secara otomatis menentukan cakupan yang diperlukan skrip, tetapi jika Anda menggunakan layanan lanjutan Chat, Anda harus menambahkan cakupan otorisasi yang digunakan oleh skrip ke file manifes project Apps Script secara manual. Lihat Menetapkan cakupan eksplisit.

Untuk mengatasi error ini, tambahkan cakupan otorisasi yang sesuai ke file appsscript.json project Apps Script sebagai bagian dari array oauthScopes. Misalnya, untuk memanggil metode spaces.messages.create, tambahkan kode berikut:

"oauthScopes": [
  "https://www.googleapis.com/auth/chat.messages.create"
]

Proses Debug

Tidak semua kesalahan menyebabkan pesan error ditampilkan. Mungkin ada error yang lebih kecil ketika kode secara teknis benar dan dapat dieksekusi, tetapi hasilnya tidak seperti yang Anda harapkan. Berikut adalah beberapa strategi untuk menangani situasi tersebut dan menyelidiki lebih lanjut skrip yang tidak berjalan seperti yang Anda harapkan.

Logging

Mencatat informasi saat project skrip dijalankan sering kali berguna saat proses debug. Google Apps Script memiliki dua metode untuk logging informasi: layanan logging Cloud dan layanan Logger dan konsol lebih dasar yang disertakan dalam editor Apps Script.

Lihat Panduan logging untuk detail lebih lanjut.

Error Reporting

Pengecualian yang terjadi karena error runtime akan otomatis dicatat menggunakan layanan Google Cloud Error Reporting. Layanan ini memungkinkan Anda menelusuri dan memfilter pesan pengecualian yang dibuat oleh project skrip Anda.

Untuk mengakses Error Reporting, lihat Melihat log Cloud dan laporan error di konsol Google Cloud Platform.

Eksekusi

Setiap kali Anda menjalankan skrip, Apps Script membuat catatan eksekusi, termasuk log Cloud. Kumpulan data ini dapat membantu Anda memahami tindakan mana yang dilakukan skrip.

Untuk melihat eksekusi skrip Anda di project Apps Script, klik Executions di sebelah kiri.

Memeriksa status layanan Apps Script

Meskipun jarang terjadi, terkadang layanan Google Workspace tertentu (seperti Gmail atau Drive) mengalami masalah sementara yang dapat menyebabkan gangguan layanan. Jika hal ini terjadi, project Apps Script yang berinteraksi dengan layanan ini mungkin tidak berfungsi seperti yang diharapkan.

Anda dapat memeriksa apakah ada pemadaman layanan Google Workspace dengan melihat Dasbor Status Google Workspace. Jika pemadaman layanan saat ini dialami, Anda dapat menunggu hingga masalah tersebut diselesaikan atau mencari bantuan tambahan di Pusat Bantuan Google Workspace atau dokumentasi Masalah Umum Google Workspace.

Menggunakan debugger dan titik henti sementara

Untuk menemukan masalah dalam skrip, Anda dapat menjalankannya dalam mode debug. Saat dijalankan dalam mode debug, skrip akan dijeda saat mencapai titik henti sementara, yaitu baris yang telah ditandai dalam skrip yang menurut Anda mungkin bermasalah. Saat dijeda, skrip menampilkan nilai setiap variabel pada waktu tersebut, sehingga Anda dapat memeriksa cara kerja internal skrip tanpa harus menambahkan banyak laporan logging.

Menambahkan titik henti sementara

Untuk menambahkan titik henti sementara, arahkan kursor ke nomor baris dari baris yang ingin Anda tambahi titik henti sementara. Di sebelah kiri nomor baris, klik lingkaran. Gambar di bawah ini menunjukkan contoh titik henti sementara yang ditambahkan ke skrip:

Menambahkan titik henti sementara

Menjalankan skrip dalam mode debug

Untuk menjalankan skrip dalam mode debug, klik Debug di bagian atas editor.

Sebelum menjalankan baris dengan titik henti sementara, skrip akan dijeda dan menampilkan tabel informasi debug. Anda dapat menggunakan tabel ini untuk memeriksa data seperti nilai parameter dan informasi yang disimpan dalam objek.

Untuk mengontrol cara skrip dijalankan, di bagian atas panel Debugger, gunakan tombol "Step in", "Step over", dan "Step out". Dengan cara ini, Anda dapat menjalankan skrip baris per baris dan memeriksa perubahan nilai dari waktu ke waktu.

Masalah terkait beberapa Akun Google

Jika Anda login ke beberapa Akun Google secara bersamaan, Anda mungkin akan mengalami masalah saat mengakses add-on dan aplikasi web. Multi-login, atau login ke beberapa Akun Google sekaligus, tidak didukung untuk Apps Script, add-on, atau aplikasi web.

  • Jika Anda membuka editor Apps Script saat login ke lebih dari satu akun, Google akan meminta Anda untuk memilih akun yang ingin digunakan untuk melanjutkan.

  • Jika Anda membuka aplikasi web atau add-on dan mengalami masalah multi-login, coba salah satu solusi berikut:

    • Logout dari semua Akun Google Anda dan hanya login ke akun yang memiliki add-on atau aplikasi web yang ingin Anda akses.
    • Buka jendela samaran di Google Chrome, atau jendela penjelajahan rahasia yang setara, dan login ke Akun Google yang memiliki add-on atau aplikasi web yang ingin Anda akses.

Mendapatkan bantuan

Proses debug masalah menggunakan alat dan teknik yang tercantum di atas dapat menyelesaikan berbagai masalah, tetapi mungkin ada masalah yang Anda hadapi yang memerlukan bantuan tambahan untuk diselesaikan. Lihat Halaman dukungan kami untuk mengetahui informasi tempat mengajukan pertanyaan dan melaporkan bug.