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

الفيديو: يمكنك الاطّلاع على محاضرة حول معالجة الأخطاء من ورشة العمل لعام 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 تحديد موقع طلبك إذا تم تقديمه ضد بيئة الإنتاج. ننصحك بتسجيل رقم تعريف الطلب (requestId) في سجلّاتك، مع تضمينه كسمة في الاستثناءات التي تتضمّن أخطاء الردّ، بالإضافة إلى توفير سياق أكبر من رقم تعريف الطلب وحده.
  • قد تكون المعلومات الإضافية، مثل إصدار وقت التشغيل/المترجم والمنصة، مفيدة أيضًا عند تحديد المشاكل وحلّها.

حلّ المشكلة

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

مشاركة المحتوى

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

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

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

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