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

الفيديو: يمكنك الاطّلاع على محاضرة حول معالجة الأخطاء من ورشة العمل لعام 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. انتقِل إلى مركز مساعدة "إعلانات Google" للحصول على المساعدة في تحديد المشاكل وحلّها المتعلّقة بالتحقّق من الصحة أو حدود الحساب، إذ إنّ Google Ads API تتبع قواعد وقيود منتج "إعلانات Google" الأساسي.

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

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

حلّ المشكلة

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

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

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

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