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

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

حلّ المشكلة

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

مراعاة حدود المشاركة

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

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

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

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