Bahkan developer yang paling berpengalaman jarang menulis kode dengan benar saat mencoba pertama, sehingga pemecahan masalah menjadi bagian penting dari proses pengembangan. Di bagian ini, kami akan membahas beberapa teknik yang dapat membantu Anda menemukan, memahami, dan men-debug error dalam skrip Anda.
Pesan error
Jika skrip Anda mengalami error, pesan error akan ditampilkan. Pesan ini disertai dengan nomor baris yang digunakan untuk pemecahan masalah. Ada dua jenis error dasar yang ditampilkan dengan cara ini: error sintaksis dan error runtime.
Error sintaksis
Error sintaksis disebabkan oleh penulisan kode yang tidak mengikuti tata bahasa JavaScript, dan error tersebut 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 ) setelah daftar argumen. (baris 4)
Jenis error ini biasanya mudah dipecahkan masalahnya, karena dapat langsung ditemukan dan biasanya memiliki penyebab sederhana. Anda tidak dapat menyimpan file yang berisi error sintaksis, artinya hanya kode yang valid yang disimpan ke dalam project Anda.
Error runtime
Error ini disebabkan oleh penggunaan fungsi atau class yang salah, 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 ini bukan alamat email yang valid, error berikut akan ditampilkan saat menjalankan skrip:
Email tidak valid: joni (baris 5)
Yang membuat error ini lebih sulit untuk dipecahkan adalah, sering kali data yang Anda teruskan ke fungsi tidak ditulis dalam kode, melainkan diambil dari spreadsheet, formulir, atau sumber data eksternal lainnya. Penggunaan 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 mengirim terlalu banyak email dalam satu hari. Kuota ditetapkan di berbagai tingkat untuk akun konsumen, domain, dan premium, serta dapat berubah sewaktu-waktu 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:
- Sistem atau server Google tidak tersedia untuk sementara. Tunggu beberapa saat, lalu coba jalankan skrip lagi.
- Terjadi error dalam skrip Anda yang tidak memiliki pesan error yang sesuai. Coba debug skrip dan lihat apakah Anda dapat mengisolasi masalahnya.
- Ada bug dalam Google Apps Script yang menyebabkan error ini. Untuk petunjuk tentang cara menelusuri dan mengajukan laporan bug, lihat Bug. Sebelum melaporkan bug baru, telusuri untuk melihat apakah orang lain telah melaporkannya.
Diperlukan otorisasi untuk melakukan tindakan tersebut.
Error ini menunjukkan bahwa skrip tidak memiliki otorisasi yang diperlukan untuk berjalan. Saat skrip dijalankan di Editor Skrip atau dari item menu kustom, dialog otorisasi 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 mengizinkan skrip, buka Editor Skrip dan jalankan fungsi apa pun. Permintaan otorisasi akan muncul sehingga Anda dapat memberi otorisasi pada project skrip. Jika skrip berisi layanan baru yang tidak diizinkan, Anda harus mengizinkan ulang skrip tersebut.
Error ini sering kali disebabkan oleh pemicu yang aktif sebelum pengguna memberikan otorisasi kepada mereka. Jika tidak memiliki akses ke project skrip (misalnya, karena terjadi error untuk add-on yang Anda gunakan), biasanya Anda dapat memberi otorisasi pada skrip tersebut menggunakan add-on lagi. Jika pemicu terus aktif dan menyebabkan error ini, Anda dapat menghapus pemicu dengan melakukan hal berikut:
- Di sebelah kiri project Apps Script, klik Pemicu .
- Di sebelah kanan pemicu yang ingin dihapus, 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 SDK 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 skrip diotorisasi sebelum admin menonaktifkan Drive SDK).
Namun, jika add-on atau aplikasi web yang menggunakan layanan Drive dipublikasikan untuk penginstalan seluruh domain dan diinstal oleh administrator untuk beberapa atau semua pengguna di domain, skrip akan berfungsi untuk pengguna tersebut meskipun Drive SDK dinonaktifkan di 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()
.
Panggilan ini juga dapat dihasilkan dari panggilan ke
Session.getEffectiveUser()
jika skrip berjalan dalam mode otorisasi selain
AuthMode.FULL
.
Jika peringatan ini ditandai, panggilan berikutnya ke
User.getEmail()
hanya akan menampilkan "".
Ada sejumlah cara untuk memecahkan masalah peringatan ini, bergantung pada mode otorisasi yang dijalankan pada skrip. Mode otorisasi ditampilkan dalam fungsi yang dipicu sebagai properti authMode
dari parameter peristiwa e
.
- Di
AuthMode.FULL
, sebaiknya gunakanSession.getEffectiveUser()
. - Di
AuthMode.LIMITED
, pastikan pemilik telah mengizinkan skrip. - Dalam mode otorisasi lainnya, jangan memanggil metode apa pun.
- Jika Anda adalah Google Workspace pelanggan yang baru mengalami peringatan ini dari pemicu yang dapat diinstal, pastikan pemicu tersebut berjalan sebagai pengguna dalam organisasi Anda.
Koleksi tidak ada
Jika menambahkan library populer ke skrip, Anda mungkin akan menerima pesan error yang menyatakan bahwa library tersebut tidak ada, meskipun library tercantum sebagai dependensi untuk skrip Anda. Hal ini mungkin disebabkan karena 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, lalu hapus dependensi library.
- Salin skrip library dan deploy sebagai library dari akun Anda. Pastikan untuk mengupdate dependensi dalam skrip asli ke library baru, bukan library publik.
Proses debug
Tidak semua kesalahan menyebabkan pesan kesalahan ditampilkan. Mungkin ada error yang lebih samar di mana kode tersebut benar secara teknis dan dapat dieksekusi, tetapi hasilnya tidak sesuai harapan. Berikut adalah beberapa strategi untuk menangani situasi tersebut dan menyelidiki skrip lebih lanjut yang tidak berjalan seperti yang Anda harapkan.
Logging
Saat melakukan debug, sebaiknya catat informasi saat project skrip dieksekusi. Google Apps Script memiliki dua metode untuk mencatat informasi ke dalam log: layanan logging Cloud dan layanan Logging dan konsol yang lebih dasar, yang merupakan bawaan di editor Apps Script.
Lihat Panduan logging untuk mengetahui detail selengkapnya.
Error Reporting
Pengecualian yang terjadi karena error runtime otomatis dicatat menggunakan layanan Google Cloud Error Reporting. Layanan ini memungkinkan Anda menelusuri dan memfilter pesan pengecualian yang dibuat oleh project skrip.
Untuk mengakses Error Reporting, lihat Melihat log Cloud dan laporan error di konsol Google Cloud Platform.
Eksekusi
Setiap kali Anda menjalankan skrip, Apps Script akan membuat catatan eksekusi, termasuk log Cloud. Data ini dapat membantu Anda memahami tindakan yang dilakukan skrip.
Untuk melihat eksekusi skrip Anda dalam project Apps Script, di sebelah kiri, klik Executions
.Memeriksa status layanan Apps Script
Meskipun jarang terjadi, terkadang layanan Google Workspace tertentu (seperti Gmail atau Drive) mengalami masalah sementara yang dapat menyebabkan pemadaman layanan. Jika hal ini terjadi, project Apps Script yang berinteraksi dengan layanan ini mungkin tidak berfungsi seperti yang diharapkan.
Anda dapat memeriksa apakah ada Google Workspace penonaktifan layanan dengan melihat Dasbor StatusGoogle Workspace . Jika gangguan saat ini sedang dialami, Anda dapat menunggu hingga masalah teratasi atau meminta bantuan tambahan di Google Workspace Pusat Bantuan atau dokumentasi Google Workspace Masalah Umum.
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 Anda soroti dalam skrip yang menurut Anda memiliki masalah. Saat dijeda, skrip menampilkan nilai dari setiap variabel pada waktu tersebut, sehingga Anda dapat memeriksa cara kerja internal sebuah skrip tanpa harus menambahkan banyak pernyataan logging.
Menambahkan titik henti sementara
Untuk menambahkan titik henti sementara, arahkan kursor ke nomor baris baris yang ingin Anda tambahi titik henti sementara. Di sebelah kiri nomor baris, klik lingkaran. Gambar di bawah menunjukkan contoh titik henti sementara yang ditambahkan ke skrip:
Menjalankan skrip dalam mode debug
Untuk menjalankan skrip dalam mode debug, di bagian atas editor, klik Debug.
Sebelum menjalankan baris dengan titik henti sementara, skrip akan menjeda 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". Fungsi ini memungkinkan Anda menjalankan skrip satu baris dalam satu waktu dan memeriksa perubahan nilai dari waktu ke waktu.
Masalah terkait beberapa Akun Google
Jika 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, cobalah salah satu solusi berikut:
- Logout dari semua Akun Google dan hanya login ke akun yang memiliki aplikasi add-on atau web yang ingin Anda akses.
- Buka jendela samaran di Google Chrome, atau jendela penjelajahan pribadi yang setara, dan login ke Akun Google yang memiliki aplikasi web atau add-on yang ingin Anda akses.
Mendapatkan bantuan
Men-debug masalah menggunakan alat dan teknik yang tercantum di atas dapat mengatasi berbagai masalah, tetapi mungkin ada masalah yang Anda alami yang memerlukan beberapa bantuan tambahan untuk diselesaikan. Lihat halaman Dukungan kami untuk mengetahui informasi tempat mengajukan pertanyaan dan melaporkan bug.