פתרון בעיות

סרטון: צפייה בהרצאה על טיפול בשגיאות מסדנת 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. במסמכי התיעוד שלנו בנושא שגיאות נפוצות מוסבר על השגיאות הנפוצות ביותר. היא כוללת תיאור של הודעת השגיאה, הפניות רלוונטיות ל-API והסבר איך להימנע מהשגיאה או לטפל בה.

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

במהלך פתרון בעיה, יכול להיות שתגלו שהאפליקציה מספקת מידע שגוי ל-API. מומלץ מאוד להשתמש בסביבת פיתוח משולבת (IDE) כמו Eclipse (סביבת פיתוח משולבת חינמית בקוד פתוח שמשמשת בעיקר לפיתוח Java, אבל יש לה תוספים לשפות אחרות) כדי לעזור לכם באיתור באגים. אפשר להגדיר נקודות עצירה ולעבור על הקוד שורה אחר שורה.

כדאי לבדוק שוב שהבקשה תואמת לנתונים שהזנתם בבקשה (לדוגמה, יכול להיות ששם הקמפיין לא מופיע בבקשה). חשוב לשלוח מסכת שדות שתואמת לעדכונים שרוצים לבצע – Google Ads API תומך בעדכונים חלקיים. אם משמיטים שדה ממסכת השדות בבקשת שינוי, המשמעות היא ש-API צריך להשאיר אותו ללא שינוי. אם האפליקציה שלכם מאחזרת אובייקט, מבצעת שינוי ושולחת אותו בחזרה, יכול להיות שאתם כותבים לשדה שלא תומך בעדכון. כדי לראות אם יש הגבלות על העדכון של השדה, צריך לעיין בתיאור השדה במסמכי העיון.

איך אפשר לקבל עזרה?

לא תמיד אפשר לזהות את הבעיה ולפתור אותה לבד. אפשר לפנות אל התמיכה לקבלת עזרה.

כדאי לכלול כמה שיותר מידע בשאילתות. פריטים מומלצים כוללים:

  • בקשת JSON ותגובה שעברו ניקוי. חשוב להסיר מידע רגיש כמו טוקן המפתח או טוקן האימות.
  • קטעי קוד. אם יש לכם בעיה שקשורה לשפה מסוימת או שאתם מבקשים עזרה בעבודה עם ה-API, כדאי לכלול קטע קוד כדי להסביר מה אתם עושים.
  • RequestId. הפעולה הזו מאפשרת לחברי צוות קשרי המפתחים ב-Google לאתר את הבקשה שלכם אם היא נשלחה לגבי סביבת הייצור. מומלץ לרשום ביומנים את requestId שכלול כמאפיין בחריגים שמכילים שגיאות בתגובה, וגם הקשר נוסף מעבר ל-requestId בלבד.
  • מידע נוסף, כמו זמן הריצה או גרסת המפרש והפלטפורמה, יכול להיות שימושי גם לפתרון בעיות.

פותרים את הבעיה

אחרי שזיהיתם את הבעיה ומצאתם פתרון, הגיע הזמן לבצע את השינוי ולבדוק את התיקון בחשבון בדיקה (מומלץ) או בסביבת הייצור (אם הבאג רלוונטי רק לנתונים בחשבון ייצור ספציפי).

השלבים הבאים

עכשיו שפתרת את הבעיה הזו, האם הבחנת בדרכים לשפר את הקוד כדי למנוע את הבעיה הזו מלכתחילה?

יצירת קבוצה טובה של בדיקות יחידה עוזרת לשפר באופן משמעותי את איכות הקוד והמהימנות שלו. היא גם מזרזת את תהליך הבדיקה של שינויים חדשים כדי לוודא שהם לא פגעו בפונקציונליות הקודמת. אסטרטגיה טובה לטיפול בשגיאות היא גם חיונית להצגת כל הנתונים הנדרשים לפתרון בעיות.