פתרון בעיות

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

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

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

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

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

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

תיקון הבעיה

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

כדאי לשתף

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

השלבים הבאים

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

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