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

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

حلّ المشكلة

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

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

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

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

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

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