عیب‌یابی

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

اطمینان از اتصال‌پذیری

  1. مطمئن شوید که به «میانای برنامه‌سازی کاربردی Google Ads» دسترسی دارید و راه‌اندازی درستی دارید. اگر پاسخ شما خطاهای 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.match_type'.",
      "location": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 1 }
        ]
      }
    }
  ]
}

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

درباره خطا تحقیق کنید

  1. به سند خطاهای رایج ما مراجعه کنید که رایج‌ترین خطاهای مشاهده‌شده را پوشش می‌دهد. این مقاله پیام خطا، مراجع میانای برنامه‌سازی کاربردی مربوطه، و نحوه اجتناب از خطا یا رسیدگی به آن را شرح می‌دهد.

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

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

  4. برای دریافت راهنمایی درباره عیب‌یابی مشکلات اعتبارسنجی یا محدودیت حساب، به مرکز راهنمایی Google Ads بروید—Google Ads API از قوانین و محدودیت‌های محصول اصلی Google Ads تبعیت می‌کند.

  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": {
        "fieldPathElements": [
          { "fieldName": "operations", "index": 0 },
          { "fieldName": "create" },
          { "fieldName": "keyword" }
        ]
      }
    }
  ]
}

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

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

نحوه دریافت کمک

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

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

  • درخواست و پاسخ JSON پاک‌سازی‌شده. حتماً اطلاعات حساس مانند کد دسترسی OAuth، کد بازآوری، و شناسه‌های مشتری را بردارید.
  • تکه‌کدها. اگر مشکلی مربوط به زبان دارید یا برای کار با API درخواست کمک می‌کنید، قطعه‌ای از کد را اضافه کنید تا به توضیح کاری که انجام می‌دهید کمک کند.
  • request-id. این کار به اعضای تیم «روابط توسعه‌دهندگان Google» امکان می‌دهد درخواست شما را درصورت ارائه در محیط تولید پیدا کنند. توصیه می‌کنیم request-id موجود در سرایندهای پاسخ یا استثناهایی که خطاهای پاسخ را دربرمی‌گیرند، و همچنین زمینه‌ای بیشتر از request-id به‌تنهایی را ثبت کنید.
  • اطلاعات اضافی، مانند زمان اجرا یا نسخه مفسر و پلاتفرم، نیز می‌تواند هنگام عیب‌یابی مفید باشد.

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

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

مراحل بعدی

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

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