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

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

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

ضمان الاتصال

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

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

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

حلّ المشكلة

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

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

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

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

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

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