User Activity API

User Activity API ช่วยให้เจ้าของพร็อพเพอร์ตี้ Google Analytics ดึงข้อมูลการวัดผลการวิเคราะห์ทั้งหมดที่เชื่อมโยงกับผู้ใช้รายเดียวได้ กล่าวอย่างเจาะจงคือ API จะดึงข้อมูลการวัดผลทั้งหมดที่เชื่อมโยงกับ User-ID หรือ Client-ID ที่เฉพาะเจาะจง

การส่งคำขอกิจกรรมของผู้ใช้

หากต้องการส่งคำขอกิจกรรมของผู้ใช้ ให้สร้างออบเจ็กต์คำขอด้วยช่องต่อไปนี้

  1. Client-ID หรือ User-ID ที่เชื่อมโยงกับผู้ใช้

  2. รหัสข้อมูลพร็อพเพอร์ตี้ Analytics ที่มีข้อมูลที่เชื่อมโยงกับผู้ใช้

  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
}

เซสชันและกิจกรรม

ข้อมูลกิจกรรมของผู้ใช้จะจัดกลุ่มตามเซสชัน เซสชันแต่ละรายการจะมีข้อมูลทั่วไปเกี่ยวกับเซสชัน เช่น รหัสเซสชันและวันที่ รวมถึงรายการกิจกรรมของผู้ใช้ในเซสชันนั้น กิจกรรมของผู้ใช้ในเซสชันประกอบด้วยทุก "Hit" ที่ผู้ใช้รับผิดชอบ ซึ่งรวมถึงสิ่งต่างๆ เช่น การดูหน้าเว็บ เหตุการณ์อีคอมเมิร์ซ และเหตุการณ์ที่กำหนดเองที่ส่งผ่าน 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 จะแบ่งออกเป็นหน้าแรกและหน้า 2 และเซสชัน 2 เซสชันในวันที่ 24 พฤศจิกายนจะแบ่งออกเป็นหน้าที่ 2 และ 3 คำตอบจะมีลักษณะดังนี้

{
    "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 ส่วน เพื่อให้แต่ละส่วนมีข้อมูลเดิมประมาณ 1 ใน 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