تحديد المشاكل وحلّها

فيديو: الاطّلاع على حديث حول التعامل مع الأخطاء من ورشة العمل لعام 2019

يمكن أن تحدث الأخطاء بسبب إعداد بيئة غير صحيح أو خلل في برنامجك أو بسبب إدخال غير صالح من مستخدم. بغض النظر عن المصدر، ستحتاج إلى تحديد المشاكل وحلّها وحلّ الرمز أو إضافة منطق لمعالجة خطأ المستخدم. يناقش هذا الدليل بعض أفضل الممارسات عند تحديد وحلّ المشاكل المتعلقة بأخطاء Google Ads API.

ضمان الاتصال

  1. تأكّد من أنّه بإمكانك الوصول إلى Google Ads API وإعداد الإعدادات الصحيح. إذا كانت إجابتك تعرض أي أخطاء في بروتوكول نقل الروابط النصية (HTTP)، تأكَّد من معالجتها بعناية ومن أنك تصل إلى الخدمات التي تريد استخدامها من الرمز الخاص بك.

  2. يتم تضمين بيانات الاعتماد في طلبك لمصادقة الخدمات. اطّلِع على بنية طلبات واستجابات Google Ads API، خاصةً إذا كنت ستعالج الطلبات بدون استخدام مكتبات العميل. يتم شحن كل مكتبة برامج مع تعليمات محدّدة حول كيفية تضمين بيانات الاعتماد في ملف الإعداد (راجِع ReadME لمكتبة البرامج).

  3. تأكَّد من استخدام بيانات الاعتماد الصحيحة. تأخذك عملية البدء السريعة خلال عملية الحصول على المجموعة الصحيحة التي تحتاجها. على سبيل المثال، يشير تعذُّر الاستجابة التالي إلى أنّ المستخدم قد أرسل بيانات اعتماد مصادقة غير صالحة:

    {
      "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"
          }
        ]
      }
    }
    

إذا اتّبعت هذه الخطوات ولم يتم حلّ مشكلتك، قد حان الوقت للاطّلاع على تفاصيل حول أخطاء Google Ads API وحلّها.

تحديد المشكلة

تُبلّغ Google Ads API بشكل عام عن أخطاء باعتبارها عنصر خطأ في JSON، وتحتوي على قائمة بالأخطاء في الاستجابة. وتوفِّر هذه العناصر رمز خطأ، بالإضافة إلى رسالة توضِّح سبب حدوثها. وهي أول إشارات لك عن المشكلة.

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

تتيح جميع مكتبات العملاء استثناءات تشير إلى الأخطاء في الاستجابة. ويُعدّ تسجيل هذه الاستثناءات وطباعة الرسائل في سجلّ أو شاشة تحديد المشاكل وحلّها طريقة رائعة للبدء. يؤدي دمج هذه المعلومات في الأحداث المسجَّلة الأخرى في تطبيقك إلى تقديم نظرة عامة جيدة على الأسباب المحتملة وراء ظهور المشكلة. بعد تحديد الخطأ في السجلات، ستحتاج إلى معرفة المقصود به.

جارٍ البحث عن الخطأ

  1. ارجع إلى مستندات الأخطاء الشائعة التي تتناول الأخطاء الأكثر شيوعًا. ويصف هذا العنوان رسالة الخطأ ومراجع واجهة برمجة التطبيقات ذات الصلة وكيفية تجنُّب الخطأ أو معالجته.

  2. إذا لم تتضمن مستندات الأخطاء الشائعة خطأً، يمكنك الرجوع إلى المستندات المرجعية والبحث عن سلسلة الخطأ.

  3. ابحث في قنوات الدعم لدينا للوصول إلى مطوّري برامج آخرين يشاركون تجاربهم مع واجهة برمجة التطبيقات. ربما واجه شخص آخر المشكلة التي واجهتها وحلّها.

  4. إذا واجهت أي أخطاء لم يتم توثيقها، يمكنك لفت انتباهنا إلى المنتدى.

  5. انتقِل إلى مركز مساعدة "إعلانات Google" للحصول على مساعدة في تحديد المشاكل وحلّها أو التحقق من حدود الحساب، وتكتسب Google Ads API القواعد والقيود المفروضة على منتج "إعلانات Google" الأساسي.

  6. ستكون مشاركات المدونة في بعض الأحيان مرجعًا جيدًا عند تحديد المشاكل وحلّها في طلبك.

بعد البحث عن الخطأ، حان الوقت لتحديد السبب الأساسي للخطأ.

تحديد الموقع الجغرافي

تحقَّق من رسالة الاستثناء لتحديد سبب الخطأ. بعد الاطّلاع على الرد، اطّلِع على الطلب لمعرفة السبب المحتمل. تتضمّن بعض رسائل الخطأ في Google Ads API fieldPathElements في حقل location ضمن GoogleAdsError، ما يشير إلى مكان حدوث الخطأ في الطلب. مثلاً:

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

عند تحديد المشاكل وحلّها، قد يكون السبب هو أنّ تطبيقك يقدّم معلومات غير صحيحة إلى واجهة برمجة التطبيقات. نحن ننصح بشدة باستخدام بيئة تطوير تفاعلية (IDE)، مثل Eclipse (بيئة التطوير المتكاملة المفتوحة المصدر التي تُستخدم بشكل أساسي لتطوير Java، مع استخدام مكوّنات إضافية للغات أخرى) لمساعدتك في تصحيح الأخطاء. ويتيح لك تحديد نقاط الإيقاف والتنقّل بين السطور.

تحقق جيدًا للتأكد من تطابق الطلب مع البيانات التي تم إدخالها في التطبيق (على سبيل المثال، قد لا يتم استخدام اسم الحملة في الطلب) يُرجى التأكّد من إرسال قناع ميداني يطابق التعديلات التي تريد إجراءها، لأنّ Google Ads API تتيح إجراء تعديلات بسيطة. وعند حذف حقل من قناع الحقل في طلب التبديل، يشير هذا إلى أنّ واجهة برمجة التطبيقات يجب أن تتركه بمفرده. إذا استرد التطبيق عنصرًا، وأجرى تغييرًا، ثم أرسله مرة أخرى، ربما تكتب إلى حقل لا يتيح التحديث. تحقَّق من وصف الحقل في المستندات المرجعية لمعرفة ما إذا كانت هناك أي قيود مفروضة على التاريخ أو الوقت الذي يمكنك فيه التعديل.

كيفية الحصول على مساعدة

لا يمكن دائمًا تحديد المشكلة وحلّها بنفسك. ومن خلال طرح هذا السؤال على المنتدى، سيتم طرح سؤالك على آلاف مطوّري البرامج الذين قد يضطرون إلى التعامل مع المشكلة نفسها.

حاوِل تضمين أكبر قدر ممكن من المعلومات في طلبات البحث. تشمل العناصر المقترحة ما يلي:

  • طلب JSON المعقول والرد عليه. تأكّد من إزالة المعلومات الحسّاسة، مثل الرمز المميز للمطوِّر أو AuthToken.
  • مقتطفات الرمز. إذا كنت تواجه مشكلة متعلقة بلغة معيّنة أو طلبت المساعدة في استخدام واجهة برمجة التطبيقات، يمكنك تضمين مقتطف من الرمز لمساعدتك على توضيح ما تفعله.
  • RequestId (رقم تعريف الطلب). ويتيح ذلك لأعضاء فريق علاقات المطوّرين على Google تحديد مكان طلبك إذا تم إرساله في بيئة الإنتاج. ننصحك بالتسجيل في سجلّاتك لأنّ مُعرّف الطلب مُدرَج لسمة في الاستثناءات التي تحدّد أخطاء في الاستجابة، بالإضافة إلى سياق أكثر من مُعرّف الطلب وحده.
  • يمكن أن تكون المعلومات الإضافية، مثل إصدار وقت التشغيل/التفسير والنظام الأساسي، مفيدة أيضًا عند تحديد المشاكل وحلّها.

حلّ المشكلة

الآن بعد أن تمكّنت من تحديد المشكلة والتوصّل إلى حل، حان الوقت لإجراء التغيير واختبار الحلّ بدلاً من استخدام حساب تجريبي (الخيار المفضّل) أو الإنتاج (إذا كان الخطأ ينطبق فقط على بيانات في حساب إنتاج معيّن).

ننصحك بالمشاركة

إذا نشرت سؤالاً في المنتدى بخصوص خطأ لم يظهر من قبل ووجدت الحلّ، ننصحك بإضافته إلى سلسلة المحادثات. في المرة القادمة التي يواجه فيها مطوّر البرامج المشكلة نفسها، سيكون بإمكانه حلّها على الفور.

الخطوات التالية

الآن بعد أن انتهيت من حل هذه المشكلة، هل لاحظت أي طرق لتحسين الترميز لتجنب هذا منذ المقام الأول؟

يساعد إنشاء مجموعة جيدة من اختبارات الوحدات على تحسين جودة الرمز وموثوقيته بشكل كبير. ويؤدي ذلك أيضًا إلى تسريع عملية اختبار التغييرات الجديدة لضمان عدم توقفها عن الوظائف السابقة. وتُعدّ استراتيجية التعامل مع الأخطاء بشكل جيد عاملاً أساسيًا أيضًا لعرض جميع البيانات اللازمة لتحديد المشاكل وحلّها.