Pesan error Google Classroom API umum

Halaman ini menjelaskan beberapa pesan error, masalah, dan kemungkinan tindakan Google Classroom API yang umum untuk jenis error berikut:

HTTP 400: FAILED_PRECONDITION

FAILED_PRECONDITION ditampilkan saat pengguna mencoba melakukan tindakan yang tidak dapat diizinkan, baik karena pengguna telah mencapai batas atau status aplikasi, seperti CourseNotModifiable. Untuk memperbaiki FAILED_PRECONDITION, minta pengguna untuk melakukan tindakan tertentu, lalu coba lagi. Atau, dalam beberapa kasus, Anda dapat menggunakan endpoint alternatif untuk memperbaiki status atas nama pengguna.

AttachmentNotVisible

AttachmentNotVisible menunjukkan bahwa satu atau beberapa lampiran yang ditentukan tidak terlihat oleh pengguna, bukan jenis yang diminta, atau tidak ada. Misalnya, item Drive yang belum dibagikan kepada pengguna akan menampilkan error ini.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna memeriksa ulang ID, seperti ID file Drive, yang telah mereka sertakan. Selain itu, pastikan pengguna memiliki izin yang sesuai untuk melihat lampiran.

CannotRemoveCourseFolderOwner

CannotRemoveCourseFolderOwner menunjukkan bahwa pemilik folder Drive kursus tidak dapat dihapus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna mentransfer kepemilikan folder Drive kursus ke pengguna lain, lalu coba lagi.

CannotRemoveCourseOwner

CannotRemoveCourseOwner menunjukkan bahwa pemilik kursus tidak dapat dihapus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pemilik kursus tidak dihapus. Dalam sebagian besar kasus, pengguna mencoba menghapus diri mereka sendiri yang tidak diizinkan.

CannotRemoveCourseOwnerTransferIncomplete

CannotRemoveCourseOwnerTransferIncomplete menunjukkan bahwa pemilik kursus mungkin tidak dapat dihapus karena transfer kepemilikan kelas ini masih dalam proses.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menunggu beberapa saat hingga tindakan asinkron untuk mentransfer kepemilikan kelas selesai, lalu coba lagi.

CannotRemoveTeacherWithNoCourseOwner

CannotRemoveTeacherWithNoCourseOwner menunjukkan bahwa pengajar mungkin tidak dapat dihapus dari kursus tanpa pemilik.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengajar tidak dihapus. Biasanya, akun pengguna pemilik kursus telah dihapus, sehingga menyebabkan status kursus tidak valid.

CourseMemberLimitReached

CourseMemberLimitReached menunjukkan bahwa tindakan yang dicoba akan melampaui jumlah maksimum anggota kursus yang diizinkan. Kode ini biasanya ditampilkan oleh students.create() Untuk informasi selengkapnya, lihat bagian "Batas ukuran kelas" di artikel pusat bantuan Mengundang siswa ke kelas.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna untuk menghapus anggota kursus yang tidak diperlukan

CourseNotModifiable

CourseNotModifiable menunjukkan bahwa kursus yang relevan berada dalam status yang tidak memungkinkan propertinya diubah (selain status kursus itu sendiri).

Kemungkinan Tindakan: Minta pengguna untuk mengubah status kursus menjadi status kursus yang dapat diubah. Untuk mengubah status, gunakan courses.patch(). Status kursus dapat diubah dalam permintaan yang mengubah properti lainnya.

CourseTeacherLimitReached

CourseTeacherLimitReached menunjukkan bahwa tindakan yang diminta akan melebihi jumlah maksimum pengajar kursus yang diizinkan. Kode ini biasanya ditampilkan oleh metode teachers.create(). Untuk mengetahui informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" di artikel pusat bantuan Menambahkan rekan pengajar ke kelas.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menghapus pengajar kursus yang tidak diperlukan. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan metode teachers.delete() untuk mengelola daftar nama pengajar atas nama pengguna.

CourseTitleCannotContainUrl

CourseTitleCannotContainUrl menunjukkan bahwa tindakan yang diminta tidak diizinkan karena akan memasukkan URL ke dalam judul kursus. Pola URL tidak didukung dalam judul kursus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menghapus pola URL dari kolom title. URL diizinkan di kolom description.

CourseTopicLimitReached

CourseTopicLimitReached menunjukkan bahwa tindakan yang diminta akan melebihi jumlah maksimum topik yang diizinkan dalam kursus. Kode ini biasanya ditampilkan oleh metode courses.topics.create().

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan pengguna menghapus topik yang tidak perlu. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan metode courses.topics.delete() untuk mengelola topik atas nama pengguna.

EmptyAssignees

EmptyAssignees menunjukkan bahwa tindakan yang diminta akan menghapus semua penerima tugas dari tugas yang sesuai. Tugas kelas tanpa penerima tugas tidak didukung.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pemilik kursus tidak dapat menghapus semua penerima tugas.

InactiveCourseOwner

InactiveCourseOwner menunjukkan bahwa tindakan yang diminta tidak diizinkan karena akun pemilik kursus dihapus. Administrator pemilik kursus harus memulihkan akun pemilik kursus sebelum melakukan tindakan yang diminta.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar administrator memulihkan akun pemilik kursus sebelum mencoba lagi operasi.

IneligibleOwner

IneligibleOwner menunjukkan bahwa pengguna tidak dapat ditambahkan sebagai pemilik kursus karena pengguna bukan rekan pengajar.

Tindakan yang Dapat Dilakukan: Jelaskan penyebab kegagalan. Jika pengguna yang meminta bukan administrator, sarankan agar pengguna tersebut mengirimkan undangan terlebih dahulu kepada pengguna yang akan dijadikan pemilik baru untuk menjadi pengajar di kursus sebelum memperbarui pemilik. Jika pengguna yang meminta adalah administrator, sarankan agar dia menambahkan pengguna tersebut sebagai rekan pengajar kursus terlebih dahulu.

PendingInvitationExists

PendingInvitationExists menunjukkan bahwa seseorang telah diundang untuk mengambil alih kepemilikan kursus. Error ini terjadi selama transfer kepemilikan kursus jika transfer sebelumnya dimulai, tetapi belum diterima oleh pemilik baru.

UserCannotOwnCourse

UserCannotOwnCourse menunjukkan bahwa pengguna tidak dapat ditambahkan sebagai pemilik kursus.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar kursus tidak dapat dibuat dengan pengguna sebagai pemilik kursus. Pengguna yang meminta non-administrator dapat melihat error ini jika mereka mencoba membuat kursus dengan pengguna selain dirinya sendiri sebagai pemilik. Administrator yang meminta pengguna mungkin melihat error ini jika akun pengguna yang ditentukan sebagai pemilik tidak ada atau pengguna tidak berada di domain mereka.

UserGroupsMembershipLimitReached

UserGroupsMembershipLimitReached menunjukkan bahwa pengguna sudah menjadi anggota dari jumlah maksimum grup yang diizinkan dan tidak dapat bergabung ke kursus apa pun. Kode ini biasanya ditampilkan oleh students.create() atau teachers.create(). Untuk mengetahui informasi lebih lanjut, lihat bagian "Batasan ukuran kelas" di artikel pusat bantuan Mengundang siswa ke kelas.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna keluar dari kursus yang tidak diikuti. Pengguna dapat mempertimbangkan untuk membuat akun tambahan jika perlu berpartisipasi dalam lebih banyak kursus. Jika berlaku untuk aplikasi Anda, Anda dapat menggunakan students.create() atau teachers.delete() untuk mengelola daftar nama atas nama pengguna.

HTTP 403: PERMISSION_DENIED

Semua metode Classroom API dapat menampilkan error PERMISSION_DENIED (HTTP 403) jika pengguna akhir tidak memenuhi prasyarat untuk akses. Pesan yang menyertai error berisi pesan error untuk membantu Anda mengidentifikasi penyebabnya dan mengarahkan pengguna untuk mengambil tindakan yang sesuai.

Bagian berikut menjelaskan pesan error umum Classroom API.

CannotDirectAddUser

CannotDirectAddUser menunjukkan bahwa pengguna tidak dapat ditambahkan langsung ke kursus. Kode ini terjadi saat administrator domain mencoba menambahkan pengguna ke kursus dan pengguna tersebut tidak memiliki alamat email atau bukan anggota domain.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar administrator domain memeriksa apakah akun pengguna ada dan berada dalam domain administrator kursus.

ClassroomApiDisabled

ClassroomApiDisabled menunjukkan bahwa pengguna yang meminta tidak memiliki akses ke Classroom API.

Kemungkinan Tindakan: Mengarahkan pengguna ke petunjuk tentang mengaktifkan akses data Classroom. Lihat juga ClassroomDisabled, karena pengguna mungkin menggunakan akun yang salah.

ClassroomDisabled

ClassroomDisabled menunjukkan bahwa pengguna yang meminta tidak memiliki akses ke Classroom.

Kemungkinan Tindakan: Mengarahkan pengguna ke petunjuk tentang mengaktifkan akses Classroom. Pengguna mungkin juga menggunakan akun yang salah, jadi Anda juga dapat memberikan link ke artikel tentang menggunakan beberapa akun agar pengguna dapat memilih akun yang benar.

ExpiredAddOnToken

ExpiredAddOnToken menunjukkan bahwa token add-on yang digunakan untuk melakukan panggilan ke API telah habis masa berlakunya.

Kemungkinan Tindakan: Minta pengguna untuk memuat ulang halaman atau login ke add-on lagi agar Anda dapat memperoleh parameter kueri addOnToken yang baru dari URL permintaan.

InvalidAddOnToken

InvalidAddOnToken menunjukkan bahwa token add-on yang diteruskan dalam permintaan tidak diizinkan untuk membuat lampiran add-on pada tugas.

Kemungkinan Tindakan: Error ini dapat terjadi jika pengguna login ke add-on dengan akun yang berbeda dari akun di Classroom. Minta pengguna untuk logout dari semua akun lain di browser atau membuka Classroom di jendela Chrome samaran.

ProjectPermissionDenied

ProjectPermissionDenied menunjukkan bahwa permintaan mencoba mengubah resource yang terkait dengan project Konsol Developer yang berbeda.

Kemungkinan Tindakan: Menunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang dimaksud. Permintaan hanya dapat dilakukan oleh project Konsol Developer dari client ID OAuth yang membuat resource.

UserIneligibleToUpdateGradingPeriodSettings

UserIneligibleToUpdateGradingPeriodSettings menunjukkan bahwa permintaan mencoba mengubah setelan periode penilaian di kursus tempat pengguna yang membuat permintaan atau pemilik kursus tidak memiliki lisensi Google Workspace for Education yang sesuai, atau pengguna yang membuat permintaan bukan pengajar kursus atau administrator domain.

Kemungkinan Tindakan: Menunjukkan bahwa aplikasi Anda tidak dapat membuat permintaan yang dimaksudkan untuk memperbarui setelan periode penilaian karena status peran kursus atau pemberian lisensi. Lisensi dapat ditetapkan di konsol Google Admin.

HTTP 429: RESOURCE_EXHAUSTED

RESOURCE_EXHAUSTED ditampilkan saat tindakan yang diminta tidak diizinkan karena beberapa resource, seperti kuota atau kapasitas server, telah habis. Jenis error permintaan ini biasanya terjadi karena aplikasi Anda menghasilkan beban yang berlebihan.

Untuk menghindari pemicuan batas ini dan meningkatkan keandalan aplikasi Anda, gunakan mekanisme coba lagi. Mekanisme percobaan ulang yang valid meliputi:

  • Gunakan backoff eksponensial terpotong untuk mencoba ulang permintaan dan memaksimalkan throughput permintaan dalam lingkungan serentak.

  • Untuk menghindari tabrakan, pertimbangkan backoff eksponensial terpotong dengan jitter. Memperkenalkan jitter dapat membantu permintaan Anda berhasil lebih cepat dengan memperkenalkan penundaan acak yang menyebarkan lonjakan permintaan.

Jika aplikasi Anda menampilkan error RESOURCE_EXHAUSTED karena batasan kuota, ajukan penambahan kuota. Untuk mengetahui informasi lebih lanjut, lihat artikel pusat bantuan Kuota Monitor API.

UserCourseJoinRateLimitReached

UserCourseJoinRateLimitReached menunjukkan bahwa pengguna telah bergabung ke jumlah maksimum kursus yang diizinkan dalam satu hari. Untuk mengetahui informasi selengkapnya, lihat bagian "Undangan dan ukuran grup" di artikel pusat bantuan Memahami kebijakan dan batas Grup.

Kemungkinan Tindakan: Jelaskan penyebab kegagalan dan sarankan agar pengguna menunggu satu hari sebelum bergabung dengan kursus.

HTTP 500: INTERNAL

INTERNAL menunjukkan bahwa terjadi error tak terduga saat memproses permintaan. Error permintaan INTERNAL juga sering kali dapat diselesaikan dengan menggunakan backoff eksponensial untuk mencoba kembali permintaan. Jika error INTERNAL berlanjut, error tersebut dapat dilaporkan dengan melaporkan bug di issue tracker publik Classroom API.