Bahkan developer yang paling berpengalaman pun jarang menulis kode dengan benar pada percobaan pertama, sehingga pemecahan masalah menjadi bagian penting dari proses pengembangan. Di bagian ini, kita akan membahas beberapa teknik yang dapat membantu Anda menemukan, memahami, dan men-debug error dalam skrip.
Pesan error
Saat skrip Anda mengalami error, pesan error akan ditampilkan. Pesan 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:
Tidak ada ) setelah daftar argumen. (baris 4)
Jenis error ini biasanya mudah dipecahkan, karena langsung ditemukan dan biasanya memiliki penyebab yang sederhana. Anda tidak dapat menyimpan file yang berisi error sintaksis, yang berarti 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: john (baris 5)
Yang membuat error ini lebih sulit dipecahkan adalah sering kali data yang Anda teruskan ke fungsi tidak ditulis dalam kode, tetapi diambil dari spreadsheet, formulir, atau sumber data eksternal lainnya. Menggunakan teknik pen-debugan di bawah dapat membantu Anda mengidentifikasi penyebab error ini.
Error yang biasa terjadi
Berikut adalah daftar error umum dan penyebabnya.
Layanan terlalu sering dipanggil: <nama tindakan>
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 premier, serta dapat berubah sewaktu-waktu tanpa pengumuman sebelumnya dari Google. Anda dapat melihat batas kuota untuk berbagai tindakan di dokumentasi kuota Apps Script.
Server tidak tersedia. atau Terjadi kesalahan server, coba lagi.
Ada beberapa kemungkinan penyebab error ini:
- Server atau sistem Google tidak tersedia untuk sementara. Tunggu beberapa saat dan coba jalankan skrip lagi.
- Ada error dalam skrip Anda yang tidak memiliki pesan error yang sesuai. Coba lakukan proses debug pada skrip Anda dan lihat apakah Anda dapat mengisolasi masalahnya.
- Ada bug di Google Apps Script yang menyebabkan error ini. Untuk mendapatkan petunjuk tentang cara menelusuri dan mengirimkan laporan bug, lihat Bug. Sebelum mengajukan bug baru, lakukan penelusuran untuk melihat apakah orang lain sudah melaporkannya.
Otorisasi diperlukan untuk melakukan tindakan tersebut.
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, saat skrip dijalankan dari pemicu, disematkan dengan halaman Google Sites, atau dijalankan sebagai layanan, dialog tidak dapat ditampilkan dan error ini akan muncul.
Untuk memberi otorisasi skrip, buka Editor Skrip dan jalankan fungsi apa pun. Dialog otorisasi akan muncul sehingga Anda dapat mengizinkan project skrip. Jika skrip berisi layanan baru yang tidak sah, Anda harus memberikan kembali otorisasi skrip.
Error ini sering disebabkan oleh pemicu yang diaktifkan sebelum pengguna mengizinkannya. Jika Anda tidak memiliki akses ke project skrip (karena error terjadi pada add-on yang Anda gunakan, misalnya), Anda biasanya dapat mengizinkan skrip dengan menggunakan add-on lagi. Jika pemicu terus diaktifkan dan menyebabkan error ini, Anda dapat menghapus pemicu dengan melakukan hal berikut:
- Di sebelah kiri project Apps Script, klik Triggers .
- 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 domain memiliki kemampuan untuk menonaktifkan Drive API untuk domain mereka, yang mencegah pengguna mereka menginstal dan menggunakan aplikasi Google Drive. Google Workspace Setelan ini juga mencegah pengguna menggunakan add-on Apps Script yang menggunakan layanan Drive atau Layanan Drive Lanjutan (meskipun 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, fungsi skrip untuk pengguna tersebut akan berfungsi meskipun Drive API 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()
.
Hal ini juga dapat terjadi akibat panggilan ke
Session.getEffectiveUser()
jika skrip berjalan dalam mode otorisasi selain
AuthMode.FULL
.
Jika peringatan ini disinyalkan, panggilan berikutnya ke
User.getEmail()
hanya akan menampilkan "".
Ada sejumlah cara untuk memecahkan masalah peringatan ini, bergantung pada
mode otorisasi yang digunakan untuk menjalankan skrip. Mode otorisasi ditampilkan di fungsi yang dipicu sebagai properti authMode
dari e
parameter peristiwa.
- Di
AuthMode.FULL
, sebaiknya gunakanSession.getEffectiveUser()
. - Di
AuthMode.LIMITED
, pastikan pemilik telah mengizinkan skrip. - Dalam mode otorisasi lainnya, hindari memanggil salah satu metode.
- Jika Anda adalah pelanggan Google Workspace baru yang mengalami peringatan ini dari pemicu yang dapat diinstal, pastikan pemicu berjalan sebagai pengguna dalam organisasi Anda.
Library tidak ada
Jika menambahkan library populer ke skrip, Anda mungkin menerima pesan error yang menyatakan bahwa library tersebut tidak ada, meskipun library tersebut tercantum sebagai dependensi untuk skrip Anda. Alasannya mungkin karena terlalu banyak orang yang mengakses library pada waktu yang sama. Untuk menghindari error ini, coba salah satu solusi berikut:
- Salin dan tempel kode library ke dalam skrip Anda dan hapus dependensi library.
- Salin skrip library dan deploy sebagai library dari akun Anda. Pastikan untuk mengupdate dependensi di skrip asli Anda ke library baru, bukan yang publik.
Terjadi error karena versi deployment atau versi library tidak ada. Kode error Not_Found
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 yang diberi versi.
- Versi library yang digunakan skrip telah dihapus. Untuk memeriksa library yang tidak ada, di samping nama library, klik
> Buka di tab baru. Library yang tidak ada akan memberikan pesan error. Setelah Anda menemukan library yang perlu diupdate, lakukan
salah satu tindakan berikut:
- Perbarui library untuk menggunakan versi yang berbeda. Lihat Memperbarui pustaka.
- Hapus pustaka yang dihapus dari project dan kode skrip Anda. Lihat Menghapus perpustakaan.
Lainnya
- Skrip library yang digunakan oleh skrip Anda menyertakan library lain yang menggunakan versi yang dihapus. Lakukan salah satu tindakan berikut:
- Jika Anda memiliki akses edit ke library yang digunakan skrip, perbarui library sekunder dalam skrip tersebut ke versi yang ada.
- Perbarui library untuk menggunakan versi yang berbeda. Lihat Memperbarui pustaka.
- Hapus pustaka dari project dan kode skrip Anda. Lihat Menghapus perpustakaan.
Error 400: invalid_scope saat memanggil Google Chat API dengan layanan lanjutan
Jika Anda mengalami 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. Dalam sebagian besar kasus,
Apps Script otomatis menentukan cakupan yang diperlukan skrip,
tetapi saat Anda menggunakan layanan lanjutan Chat, Anda harus menambahkan
cakupan otorisasi yang digunakan skrip secara manual ke
file manifes project Apps Script Anda. Lihat
Menetapkan cakupan eksplisit.
Untuk mengatasi error, 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"
]
Panggilan UrlFetch ke <URL> tidak diizinkan oleh admin Anda
Administrator Google Workspace dapat mengaktifkan daftar yang diizinkan di konsol admin untuk mengontrol domain eksternal yang dapat Anda akses melalui Apps Script.
Untuk mengatasi error ini, hubungi administrator Anda agar menambahkan URL ke daftar yang diizinkan.
Proses debug
Tidak semua kesalahan menyebabkan pesan error ditampilkan. Mungkin ada error yang lebih halus di mana kode secara teknis benar dan dapat dieksekusi, tetapi hasilnya tidak sesuai dengan yang Anda harapkan. Berikut beberapa strategi untuk menangani situasi seperti itu dan menyelidiki lebih lanjut skrip yang tidak berjalan seperti yang Anda harapkan.
Logging
Saat melakukan proses debug, sebaiknya rekam informasi saat project skrip dijalankan. Google Apps Script memiliki dua metode untuk mencatat informasi: layanan Cloud Logging dan layanan Logger dan konsol yang lebih mendasar yang sudah ada di editor Apps Script.
Lihat Panduan logging untuk mengetahui detail selengkapnya.
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 dan laporan error Cloud di konsol Google Cloud Platform.
Eksekusi
Setiap kali Anda menjalankan skrip, Apps Script akan membuat catatan eksekusi, termasuk log Cloud. Catatan ini dapat membantu Anda memahami tindakan yang dilakukan skrip Anda.
Untuk melihat eksekusi skrip di project Apps Script, di sebelah kiri, klik Eksekusi
.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 sesuai ekspektasi.
Anda dapat memeriksa apakah ada gangguan layanan Google Workspace dengan melihat Dasbor Status Google Workspace. Jika terjadi gangguan saat ini, Anda dapat menunggu hingga gangguan tersebut diselesaikan atau mencari bantuan tambahan di dokumentasi Pusat Bantuan Google Workspace atau 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 Anda tandai dalam skrip yang menurut Anda mungkin bermasalah. Saat skrip dijeda, skrip akan menampilkan nilai setiap variabel pada saat itu, sehingga Anda dapat memeriksa cara kerja internal skrip tanpa harus menambahkan banyak pernyataan logging.
Menambahkan titik henti sementara
Untuk menambahkan titik henti sementara, arahkan kursor ke nomor baris yang ingin Anda tambahi titik henti sementara. Di sebelah kiri nomor baris, klik lingkaran. Gambar di bawah menampilkan contoh titik henti sementara yang ditambahkan ke skrip:
Menjalankan skrip dalam mode debug
Untuk menjalankan skrip dalam mode debug, klik Debug di bagian atas editor.
Sebelum skrip menjalankan baris dengan titik henti, skrip akan berhenti 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 ini, Anda dapat menjalankan skrip satu baris dalam satu waktu dan memeriksa perubahan nilai dari waktu ke waktu.
Error: Kode sumber untuk baris saat ini tidak tersedia
Error ini muncul saat file proses debug aktif tidak tersedia.
Google Apps Script tidak mendukung menampilkan skrip JavaScript (JS) yang dibuat secara dinamis di editor skrip, seperti yang dibuat menggunakan
eval()
dan new Function()
. Skrip ini dibuat dan dieksekusi
dalam mesin V8, tetapi tidak ditampilkan sebagai file mandiri di editor.
Jika Anda menelusuri skrip ini, Anda akan mengalami error ini.
Misalnya, pertimbangkan kode berikut:
function myFunction() {
eval('a=2');
}
Saat eval()
dipanggil, argumennya diperlakukan sebagai kode JS dan berjalan sebagai skrip yang dibuat secara dinamis di dalam mesin V8. Jika Anda menelusuri eval()
, error ini akan muncul. Jika skrip menyertakan komentar //# sourceURL
, namanya
ditampilkan di stack panggilan. Jika tidak, entri akan muncul sebagai entri tanpa nama.
Meskipun ada pesan error, sesi penelusuran tetap aktif, dan eksekusi dapat dilanjutkan. Untuk melanjutkan, teruskan ke langkah masuk, keluar, atau lanjutkan eksekusi. Namun, error ini akan terus muncul selama eksekusi tetap berada dalam cakupan skrip dinamis. Setelah eksekusi keluar dari skrip dinamis, proses debug akan berlanjut tanpa error ini.
Masalah terkait beberapa Akun Google
Jika login ke beberapa Akun Google secara bersamaan, Anda mungkin 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 memilih akun yang ingin Anda gunakan 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
Men-debug masalah menggunakan alat dan teknik yang tercantum di atas dapat menyelesaikan berbagai masalah, tetapi mungkin ada masalah yang Anda alami yang memerlukan bantuan tambahan untuk menyelesaikannya. Lihat halaman Dukungan kami untuk mengetahui informasi tentang tempat mengajukan pertanyaan dan melaporkan bug.