User Activity API

User Activity API מאפשר לבעלים של נכס ב-Google Analytics לאחזר את כל נתוני המדידה של משתמש יחיד. באופן ספציפי, ה-API מאחזר את כל נתוני המדידה שמשויכים ל-User-ID או ל-Client-ID מסוימים.

שליחת בקשה לפעילות משתמש

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

  1. Client-ID או User-ID שמשויכים למשתמש

  2. מזהה תצוגה מפורטת ב-Analytics שמכיל את הנתונים המשויכים למשתמש.

    • אפשר לחפש את מזהה התצוגה המפורטת באמצעות Account Explorer.
  3. זו אמנם לא חובה, אבל סביר להניח שתזדקקו לטווח תאריכים לנתונים הרצויים. כברירת מחדל, ה-API מציג רשימה של פעילות המשתמשים בשבוע האחרון.

בקשה לדוגמה

POST https://analyticsreporting.googleapis.com/v4/userActivity:search

{
    "viewId": "9999999",
    "user": {
        "type": "CLIENT_ID",
        "userId": "1034600000.76425000000"
    },
    "dateRange": {
        "startDate": "2018-01-01",
        "endDate": "2018-12-31",
    }
}

תשובה לדוגמה

{
    "sessions": [{
        "sessionId": "1539184430",
        "deviceCategory": "desktop",
        "platform": "Windows",
        "dataSource": "web",
        "sessionDate": "2018-10-10"
        "activities": [{
            "activityTime": "2018-10-10T08:13:50.555105Z",
            "source": "(direct)",
            "medium": "(none)",
            "channelGrouping": "Direct",
            "campaign": "(not set)",
            "keyword": "(not set)",
            "hostname": "shop.googlemerchandisestore.com",
            "landingPagePath": "/gpsmap",
            "activityType": "PAGEVIEW",
            "customDimension": [{
                "index": 1,
                "value": "(not set)"
            }, ...]
        }, ...]
    }, ...]
    "totalRows": 1000,
    "nextPageToken": "A6JGY3",
    "sampleRate": 1
}

סשנים ופעילויות

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

חלוקה לדפים

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

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

נתונים לדוגמה

למטרות הדגמה, נשתמש בנתוני המדגם הבאים. בדוגמה הזו, המשתמש יצר אינטראקציה עם האתר ב-6 סשנים במהלך 3 ימים.

תאריך מזהה פעילות תווית אירוע שעה
2018-11-23 1 A 10:26
2018-11-23 1 B 10:32
2018-11-23 1 C 10:39
2018-11-23 2 A 18:04
2018-11-23 2 B 18:11
2018-11-23 2 C 18:26
2018-11-24 3 A 11:26
2018-11-24 3 B 11:29
2018-11-24 3 C 11:39
2018-11-24 3 D 11:42
2018-11-24 4 A 23:50
2018-11-24 4 B 23:54
2018-11-25 5 C 00:02
2018-11-25 5 D 00:13
2018-11-25 6 A 13:01
2018-11-25 6 B 13:09
2018-11-25 6 C 13:12
2018-11-25 6 D 13:23

דף יחיד

אם שולחים בקשה לפעילות משתמש עם pageSize של 18 לפחות, כל הנתונים יועברו בדף אחד, וייראו בערך כך:

POST https://analyticsreporting.googleapis.com/v4/userActivity:search

{
    "viewId": "9999999",
    "user": {
        "type": "CLIENT_ID",
        "userId": "1034600000.76425000000",
    },
    "dateRange": {
        "startDate": "2018-11-20",
        "endDate": "2018-11-30",
    },
    "pageSize": 100,
}
{
    "totalRows": 18,
    "sessions": [{
            "sessionId": "1",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T10:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T10:32:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T10:39:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:04:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T18:11:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T18:26:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "3",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T11:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T11:29:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-24T11:39:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-24T11:42:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "4",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T23:50:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T23:54:00",
                    "event": {"eventLabel": "B"}
                }]
        }, {
            "sessionId": "5",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T00:01:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T00:13:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:01:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-25T13:09:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-25T10:12:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T10:23:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}

דפים מרובים

עם זאת, אם גודל הדף הוא 5, הנתונים האלו יחולקו ל-4 דפי תגובה:

תאריךמזהה פעילותתווית אירועשעה
דף 1:
2018-11-231A10:26
2018-11-231B10:32
2018-11-231C10:39
2018-11-232A18:04
2018-11-232B18:11
דף 2:
2018-11-232C18:26
2018-11-243A11:26
2018-11-243B11:29
2018-11-243C11:39
2018-11-243D11:42
דף 3:
2018-11-244A23:50
2018-11-244B23:54
2018-11-255C00:02
2018-11-255D00:13
2018-11-256A13:01
דף 4:
2018-11-256B13:09
2018-11-256C13:12
2018-11-256D13:23

שים לב שפעילות 2 באתר מחולקת לדף הראשון ולדף השני, וששתי הפעילויות באתר ב-24 בנובמבר מחולקות בין הדף השני והשלישי. התשובות ייראו בערך כך:

{
    "totalRows": 18,
    "nextPageToken": "UGMGQS",
    "sessions": [{
            "sessionId": "1",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T10:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T10:32:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-23T10:39:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:04:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-23T18:11:00",
                    "event": {"eventLabel": "B"}
                }]
        }]
}
{
    "totalRows": 18,
    "nextPageToken": "1FKOME",
    "sessions": [{
            "sessionId": "2",
            "sessionDate": "2018-11-23",
            "activities": [{
                    "activityTime": "2018-11-23T18:26:00",
                    "event": {"eventLabel": "C"}
                }]
        }, {
            "sessionId": "3",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T11:26:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T11:29:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-24T11:39:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-24T11:42:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}
{
    "totalRows": 18,
    "nextPageToken": "7S77H6",
    "sessions": [{
            "sessionId": "4",
            "sessionDate": "2018-11-24",
            "activities": [{
                    "activityTime": "2018-11-24T23:50:00",
                    "event": {"eventLabel": "A"}
                }, {
                    "activityTime": "2018-11-24T23:54:00",
                    "event": {"eventLabel": "B"}
                }]
        }, {
            "sessionId": "5",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T00:01:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T00:13:00",
                    "event": {"eventLabel": "D"}
                }]
        }, {
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:01:00",
                    "event": {"eventLabel": "A"}
                }]
        }]
}
{
    "totalRows": 18,
    "sessions": [{
            "sessionId": "6",
            "sessionDate": "2018-11-25",
            "activities": [{
                    "activityTime": "2018-11-25T13:09:00",
                    "event": {"eventLabel": "B"}
                }, {
                    "activityTime": "2018-11-25T10:12:00",
                    "event": {"eventLabel": "C"}
                }, {
                    "activityTime": "2018-11-25T10:23:00",
                    "event": {"eventLabel": "D"}
                }]
        }]
}

דגימת נתונים

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

איך מתבצעת דגימת הנתונים

נתוני המשתמשים נדגמים ברמת הפעילות. לדוגמה, עם שיעור דגימה של 50% (0.5), מחצית מפעילויות המשתמש יוצגו בתגובה.

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

מניעה של דגימת נתונים

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

לדוגמה, במקרה שמבקשים נתונים מ-2018-01-01 עד 2018-12-31, ובתשובה מצביעה על קצב דגימה של 0.25, צריך לחלק את טווח התאריכים המבוקש ל-4 חלקים, כך שכל חלק יכיל כרבע מהנתונים המקוריים:

  • 2018-01-01 עד 2018-03-31
  • 2018-04-01 עד 2018-06-30
  • 2018-07-01 עד 2018-09-30
  • 2018-10-01 עד 2018-12-31