Pemecahan masalah

Video: Lihat diskusi penanganan error dari workshop 2019

Error dapat disebabkan oleh penyiapan lingkungan yang salah, bug di software Anda, atau input yang tidak valid dari pengguna. Apa pun sumbernya, Anda harus memecahkan masalah tersebut dan memperbaiki kode Anda atau menambahkan logika untuk menangani error pengguna. Panduan ini berisi pembahasan mengenai beberapa praktik terbaik saat memecahkan masalah error dari Google Ads API.

Memastikan konektivitas

  1. Pastikan Anda memiliki akses ke Google Ads API dan penyiapan yang benar. Jika respons Anda menampilkan error HTTP, pastikan Anda mengatasinya dengan hati-hati dan menjangkau layanan yang ingin Anda gunakan dari kode Anda.

  2. Kredensial Anda disematkan di permintaan agar layanan dapat mengautentikasi Anda. Pahami struktur permintaan dan respons Google Ads API, terutama jika Anda akan menangani panggilan tanpa menggunakan library klien. Setiap library klien dikirimkan dengan petunjuk khusus tentang cara menyertakan kredensial Anda dalam file konfigurasi (lihat README library klien).

  3. Pastikan Anda menggunakan kredensial yang benar. Quickstart kami memandu Anda melalui proses memperoleh kumpulan yang benar yang Anda butuhkan. Misalnya, kegagalan respons berikut menunjukkan bahwa pengguna telah mengirim kredensial autentikasi yang tidak valid:

    {
      "error": {
        "code": 401,
        "message": "Request had invalid authentication credentials. Expected OAuth 2 access token, login cookie or other valid authentication credential. Visit https://developers.google.com/identity/sign-in/web/devconsole-project.",
        "status": "UNAUTHENTICATED",
        "details": [
          {
            "@type": "type.googleapis.com/google.rpc.DebugInfo",
            "detail": "Authentication error: 2"
          }
        ]
      }
    }
    

Jika Anda telah mengikuti langkah-langkah ini dan masih mengalami masalah, kini saatnya memahami pemecahan masalah error Google Ads API.

Menentukan masalah

Google Ads API umumnya melaporkan error sebagai objek kegagalan JSON, yang berisi daftar error dalam respons. Objek ini memberikan kode error serta pesan yang menjelaskan alasannya. Masalah tersebut adalah sinyal pertama tentang kemungkinan masalahnya.

{
  "errors": [
    {
      "errorCode": { "fieldMaskError": "FIELD_NOT_FOUND" },
      "message": "The field mask contained an invalid field: 'keyword/matchtype'.",
      "location": { "operationIndex": "1" }
    }
  ]
}

Semua library klien kami menampilkan pengecualian yang mengenkapsulasi error dalam respons. Menangkap pengecualian ini dan mencetak pesan dalam log atau layar pemecahan masalah adalah cara yang bagus untuk memulai. Mengintegrasikan informasi ini dengan peristiwa yang dicatat ke dalam log pada aplikasi Anda menawarkan ringkasan yang baik tentang hal yang mungkin memicu masalah. Setelah mengidentifikasi error dalam log, Anda harus mencari tahu apa artinya.

Mencari tahu error

  1. Lihat dokumentasi Error Umum kami, yang mencakup error yang paling sering ditemui. Halaman ini menjelaskan pesan error, referensi API yang relevan, dan cara menghindari atau menangani error tersebut.

  2. Jika dokumentasi error umum kami tidak menyebutkan error tersebut secara khusus, baca dokumentasi referensi kami dan cari string error.

  3. Telusuri saluran dukungan kami untuk mendapatkan akses ke pengembang lain yang berbagi pengalaman dengan API. Orang lain mungkin telah mengalami—dan mengatasi—masalah yang Anda alami.

  4. Jika Anda mengalami error yang tidak didokumentasikan, beri tahu kami di forum.

  5. Buka Pusat Bantuan Google Ads untuk membantu memecahkan masalah validasi akun atau batas akun—Google Ads API mewarisi aturan dan batasan dari produk inti Google Ads.

  6. Postingan blog terkadang akan menjadi referensi yang baik saat memecahkan masalah aplikasi Anda.

Setelah meneliti kesalahan, sekarang saatnya menentukan akar masalah.

Menemukan penyebabnya

Periksa pesan pengecualian untuk menentukan penyebab error. Setelah melihat respons, periksa permintaan untuk mengetahui kemungkinan penyebabnya. Beberapa pesan error Google Ads API menyertakan fieldPathElements di kolom location pada GoogleAdsError, yang menunjukkan tempat terjadinya error dalam permintaan. Contoh:

{
  "errors": [
    {
      "errorCode": {"criterionError": "CANNOT_ADD_CRITERIA_TYPE"},
      "message": "Criteria type can not be targeted.",
      "trigger": { "stringValue": "" },
      "location": {
        "operationIndex": "0",
        "fieldPathElements": [ { "fieldName": "keyword" } ]
      }
    }
  ]
}

Saat memecahkan masalah, mungkin aplikasi Anda memberikan informasi yang salah ke API. Kami sangat menyarankan penggunaan Lingkungan Pengembangan Interaktif (IDE) seperti Eclipse (IDE gratis dan open source yang utamanya digunakan untuk mengembangkan Java, tetapi memiliki plugin untuk bahasa lain) guna membantu Anda dalam proses debug. Dengan cara ini, Anda dapat menyetel titik henti sementara dan menelusuri kode baris demi baris.

Periksa kembali untuk memastikan permintaan cocok dengan input aplikasi Anda (misalnya, nama Campaign mungkin tidak berhasil disertakan ke permintaan). Pastikan Anda mengirim masker kolom yang cocok dengan pembaruan yang ingin Anda lakukan--Google Ads API mendukung pembaruan jarang. Menghapus kolom dari mask kolom dalam permintaan mutasi menunjukkan bahwa API harus membiarkannya. Jika aplikasi Anda mengambil objek, melakukan perubahan, dan mengirimkannya kembali, Anda mungkin menulis ke kolom yang tidak mendukung update. Periksa deskripsi kolom di dokumentasi referensi untuk melihat apakah ada batasan kapan atau apakah Anda dapat memperbarui kolom tersebut.

Cara mendapatkan bantuan

Anda tidak selalu dapat mengidentifikasi dan menyelesaikan masalah sendiri. Mengajukan pertanyaan di forum akan mengungkap pertanyaan Anda kepada ribuan developer yang mungkin harus mengatasi masalah yang sama.

Coba sertakan informasi sebanyak mungkin dalam kueri Anda. Item yang direkomendasikan mencakup:

  • Respons dan permintaan JSON yang dibersihkan. Pastikan untuk menghapus informasi sensitif seperti token developer atau AuthToken Anda.
  • Cuplikan kode. Jika Anda mengalami masalah bahasa tertentu atau meminta bantuan untuk menggunakan API, sertakan cuplikan kode untuk membantu menjelaskan apa yang Anda lakukan.
  • ID Permintaan. Hal ini memungkinkan anggota tim Developer Relations Google menemukan permintaan Anda jika diajukan terhadap lingkungan produksi. Sebaiknya daftarkan log permintaan Anda ke dalam log sebagai properti yang dikecualikan dalam pengecualian yang merangkum error respons, serta konteks yang lebih lengkap daripada requestId saja.
  • Informasi tambahan, seperti versi runtime/penafsir dan platform juga dapat berguna saat memecahkan masalah.

Memperbaiki masalah

Setelah mengetahui masalah tersebut dan mencari solusinya, kini saatnya melakukan perubahan dan menguji perbaikan terhadap akun pengujian (lebih disukai) atau produksi (jika bug hanya berlaku untuk data di akun produksi tertentu).

Pertimbangkan Berbagi

Jika Anda telah memposting pertanyaan di forum terkait error yang belum pernah muncul di sana dan Anda telah menemukan solusinya, pertimbangkan untuk menambahkannya ke thread. Saat developer mengalami masalah yang sama, mereka dapat segera menyelesaikannya.

Langkah Berikutnya

Setelah menyelesaikan masalah ini, apakah Anda mengetahui cara untuk meningkatkan kode untuk menghindari hal ini?

Membuat kumpulan pengujian unit yang baik akan membantu meningkatkan kualitas dan keandalan kode secara signifikan. Proses ini juga mempercepat proses pengujian perubahan baru untuk memastikan perubahan tersebut tidak merusak fungsi sebelumnya. Strategi penanganan error yang baik juga merupakan kunci untuk menampilkan semua data yang diperlukan untuk pemecahan masalah.