عیب یابی

ویدئوی : به بحث مدیریت خطا در کارگاه ۲۰۱۹ نگاهی بیندازید.

خطاها می‌توانند ناشی از تنظیم نادرست محیط، وجود یک اشکال در نرم‌افزار شما یا ورودی نامعتبر از سوی کاربر باشند. صرف نظر از منبع، شما باید مشکل را عیب‌یابی کنید و یا کد خود را اصلاح کنید یا منطقی را برای مدیریت خطای کاربر اضافه کنید. این راهنما برخی از بهترین شیوه‌ها را هنگام عیب‌یابی خطاهای ناشی از API تبلیغات گوگل مورد بحث قرار می‌دهد.

اطمینان از اتصال

  1. مطمئن شوید که به API گوگل ادز دسترسی دارید و تنظیمات آن را به درستی انجام داده‌اید. اگر پاسخ شما هرگونه خطای HTTP را برمی‌گرداند، مطمئن شوید که آنها را با دقت برطرف می‌کنید و از طریق کد خود به سرویس‌هایی که قصد استفاده از آنها را دارید، دسترسی پیدا می‌کنید.

  2. اعتبارنامه‌های شما در درخواستتان تعبیه شده‌اند تا سرویس‌ها بتوانند شما را احراز هویت کنند. با ساختار درخواست‌ها و پاسخ‌های 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"
          }
        ]
      }
    }
    

اگر این مراحل را دنبال کرده‌اید و هنوز با مشکل مواجه هستید، وقت آن رسیده است که به عیب‌یابی خطاهای 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. به مستندات خطاهای رایج ما مراجعه کنید، که رایج‌ترین خطاها را پوشش می‌دهد. این مستندات پیام خطا، منابع API مربوطه و نحوه جلوگیری یا مدیریت خطا را شرح می‌دهد.

  2. اگر مستندات خطاهای رایج ما به طور خاص به خطا اشاره نکرده است، به مستندات مرجع ما مراجعه کنید و رشته خطا را جستجو کنید.

  3. برای دسترسی به سایر توسعه‌دهندگانی که تجربیات خود را با API به اشتراک می‌گذارند، کانال‌های پشتیبانی ما را جستجو کنید. ممکن است شخص دیگری با مشکل شما مواجه شده و آن را حل کرده باشد.

  4. برای کمک به عیب‌یابی مشکلات اعتبارسنجی یا محدودیت حساب، به مرکز راهنمایی گوگل ادز مراجعه کنید - رابط برنامه‌نویسی کاربردی گوگل ادز قوانین و محدودیت‌های محصول اصلی گوگل ادز را به ارث می‌برد.

  5. پست‌های وبلاگ گاهی اوقات می‌توانند مرجع خوبی برای عیب‌یابی برنامه شما باشند.

  6. اگر با خطایی مواجه شدید که مستند نشده است، با پشتیبانی تماس بگیرید.

پس از بررسی خطا، نوبت به تعیین علت اصلی آن می‌رسد.

علت را پیدا کنید

برای تعیین علت خطا، پیام خطا را بررسی کنید. پس از بررسی پاسخ، درخواست را برای یافتن علت احتمالی بررسی کنید. برخی از پیام‌های خطای 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" } ]
      }
    }
  ]
}

هنگام عیب‌یابی یک مشکل، ممکن است متوجه شوید که برنامه شما اطلاعات نادرستی را به API ارائه می‌دهد. ما اکیداً استفاده از یک محیط توسعه تعاملی (IDE) مانند Eclipse (یک IDE رایگان و متن‌باز که در درجه اول برای توسعه جاوا استفاده می‌شود، اما افزونه‌هایی برای زبان‌های دیگر نیز دارد) را برای کمک به شما در اشکال‌زدایی توصیه می‌کنیم. این به شما امکان می‌دهد نقاط توقف را تنظیم کنید و کد خود را خط به خط بررسی کنید.

دوباره بررسی کنید تا مطمئن شوید درخواست با ورودی‌های برنامه شما مطابقت دارد (برای مثال، ممکن است نام کمپین به درخواست ارسال نشده باشد). مطمئن شوید که یک ماسک فیلد ارسال می‌کنید که با به‌روزرسانی‌هایی که می‌خواهید انجام دهید مطابقت دارد - API تبلیغات گوگل از به‌روزرسانی‌های پراکنده پشتیبانی می‌کند. حذف یک فیلد از ماسک فیلد در یک درخواست تغییر، نشان می‌دهد که API باید آن را به حال خود رها کند. اگر برنامه شما یک شیء را بازیابی می‌کند، تغییری ایجاد می‌کند و آن را برمی‌گرداند، ممکن است در حال نوشتن در فیلدی هستید که از به‌روزرسانی پشتیبانی نمی‌کند. توضیحات فیلد را در مستندات مرجع بررسی کنید تا ببینید آیا محدودیتی در مورد زمان یا امکان به‌روزرسانی فیلد وجود دارد یا خیر.

چگونه کمک بگیریم

همیشه نمی‌توان مشکل را به تنهایی شناسایی و حل کرد. می‌توانید برای کمک با پشتیبانی تماس بگیرید.

سعی کنید تا حد امکان اطلاعات بیشتری را در سوالات خود بگنجانید. موارد توصیه شده عبارتند از:

  • درخواست و پاسخ JSON ایمن‌سازی شده. حتماً اطلاعات حساس مانند توکن توسعه‌دهنده یا AuthToken خود را حذف کنید.
  • قطعه کد. اگر مشکل خاصی در زبان دارید یا برای کار با API درخواست کمک دارید، یک قطعه کد برای توضیح کاری که انجام می‌دهید، ضمیمه کنید.
  • RequestId. این به اعضای تیم روابط توسعه‌دهندگان گوگل این امکان را می‌دهد که در صورت ارسال درخواست شما در محیط عملیاتی، آن را پیدا کنند. توصیه می‌کنیم requestId موجود در گزارش‌های خود را به عنوان یک ویژگی در استثنائاتی که خطاهای پاسخ را در بر می‌گیرند، ثبت کنید و همچنین زمینه بیشتری نسبت به requestId به تنهایی ارائه دهید.
  • اطلاعات اضافی، مانند زمان اجرا یا نسخه مفسر و پلتفرم نیز می‌تواند هنگام عیب‌یابی مفید باشد.

مشکل را برطرف کنید

حالا که مشکل را فهمیدید و راه‌حلی ارائه دادید، وقت آن رسیده که تغییر خود را اعمال کنید و راه‌حل را روی یک حساب آزمایشی (ترجیحاً) یا حساب عملیاتی (اگر اشکال فقط روی داده‌های یک حساب عملیاتی خاص اعمال می‌شود) آزمایش کنید.

مراحل بعدی

حالا که این مشکل را حل کرده‌اید، آیا متوجه شدید که برای جلوگیری از این مشکل، چه راه‌هایی برای بهبود کد خود دارید؟

ایجاد مجموعه‌ای خوب از تست‌های واحد به بهبود قابل توجه کیفیت و قابلیت اطمینان کد کمک می‌کند. همچنین روند آزمایش تغییرات جدید را سرعت می‌بخشد تا اطمینان حاصل شود که آنها عملکرد قبلی را مختل نمی‌کنند. یک استراتژی خوب برای مدیریت خطا نیز در نمایش تمام داده‌های لازم برای عیب‌یابی کلیدی است.