פתרון בעיות

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

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

  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 (סביבת פיתוח משולבת (IDE) חינמית וקוד פתוח, שמשמשת בעיקר לפיתוח Java, אבל יש בה יישומי פלאגין בשפות אחרות) כדי לעזור בניפוי באגים. הוא מאפשר להגדיר נקודות עצירה ולעבור דרך הקוד שורה אחרי שורה.

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

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

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

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

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

תיקון הבעיה

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

כדאי לשתף

אם פרסמתם שאלה בפורום לגבי שגיאה שלא הוצגה שם בעבר ומצאתם את הפתרון, כדאי להוסיף אותה לשרשור. בפעם הבאה שמפתחים ייתקלו באותה בעיה, הוא יוכל לפתור אותה מיד.

השלבים הבאים

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

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