סקירה כללית

Google Analytics Admin API v1 מאפשר לגשת לדוחות גישה לנתונים באמצעות runAccessReport . הדוח מספק רשומות של כל פעם שמשתמש קורא את Google Analytics נתוני דיווח. רשומות הגישה נשמרות למשך שנתיים לכל היותר. גישה לנתונים דוחות זמינים רק למשתמשים עם תפקיד אדמין.

יצירת דוח גישה לנתונים

הדיווח על גישה לנתונים מסופק על ידי השיטה runAccessReport.

תכונות משותפות עם דוחות ליבה

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

להכיר את הסקירה הכללית של פונקציונליות הדיווח המרכזית של Data API v1, בהמשך המסמך יתמקד בתכונות ספציפיות לבקשות הדוח 'גישה לנתונים'.

בחירת ישות מדווחת

בדומה לדוחות הליבה של הפונקציונליות Data API v1, runAccessReport של Google Analytics Admin API v1 מחייב את Google Analytics מזהה המאפיין שיצוין נתיב בקשה לכתובת URL בפורמט properties/GA_PROPERTY_ID, למשל:

  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport

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

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

מאפיינים ומדדים

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

מדדים שמייצגים את המדידות הכמותיות של דוח. המדד accessCount מחזירה את המספר הכולל של רשומות הגישה לנתונים.

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

בקשת דוח גישה לנתונים

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

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

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

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

דיווח על התשובה

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

כל דוח גישה שורה מורכבת AccessDimensionValues וגם AccessMetricValues של העמודות בדוח. סדר העמודות עקבי את הבקשה, את הכותרת וכל שורה.

הנה תשובה לדוגמה לבקשה לדוגמה הקודמת:

{
  "dimensionHeaders": [
    {
      "dimensionName": "mostRecentAccessEpochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricHeaders": [
    {
      "metricName": "accessCount"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "1667591408427733"
        },
        {
          "value": "Bola@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "1238"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667710959827161"
        },
        {
          "value": "Alex@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "475"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "1667868650762743"
        },
        {
          "value": "Mahan@example.net"
        }
      ],
      "metricValues": [
        {
          "value": "96"
        }
      ]
    }
  ],
  "rowCount": 3
}

איך מסננים לפי רשומות גישה

משתמשים ב dimensionFilter שדה RunAccessReportRequest להגבלת התגובה של הדוח לערכי מאפיינים ספציפיים שתואמים

בדוגמה הבאה נוצר דוח שמבוסס על גישה לנתונים ספציפיים רשומות, סינון רשומות גישה של משתמש יחיד בעל כתובת אימייל Alex@example.net הדוח מכיל את השעה של כל רשומת גישה, כתובת אימייל וכתובת IP.

HTTP

POST https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "epochTimeMicros"
    },
    {
      "dimensionName": "userEmail"
    },
    {
      "dimensionName": "userIP"
    }
  ],
  "dimensionFilter": {
    "accessFilter": {
      "fieldName": "userEmail",
      "stringFilter": {
        "matchType": "EXACT",
        "value": "Alex@example.net"
      }
    }
  }
}

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

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

HTTP

{
  "dateRanges": [
    {
      "startDate": "7daysAgo",
      "endDate": "today"
    }
  ],
  "dimensions": [
    {
      "dimensionName": "userEmail"
    }
  ],
  "metricFilter": {
    "accessFilter": {
      "numericFilter": {
        "operation": "GREATER_THAN",
        "value": {
          "int64Value": 100
        }
      },
      "fieldName": "accessCount"
    }
  },
  "metrics": [
    {
      "metricName": "accessCount"
    }
  ]
}

דוחות לדוגמה

הנה כמה דוחות לדוגמה שאפשר לנסות.

הדוח האחרון לגבי גישה לכל משתמש

דוח הגישה לדוגמה הבא שניתן ליצור באמצעות runAccessReport:

ה-Micros של תקופת הגישה האחרונה כתובת האימייל של המשתמש מספר הרשאות הגישה
1525220215025371 Bola@example.net 5
1525220215028361 Alex@example.net 36
1525220215027671 Charlie@example.net 1153
1525220215027341 Mahan@example.net 1

כדי ליצור את הדוח הזה, מאפיינים mostRecentAccessEpochTimeMicros, userEmail והמדד accessCount. הדוח מכיל שורה אחת לכל משתמש: mostRecentAccessEpochTimeMicros המאפיין צובר רשומות גישה לנתונים עבור כל משתמש שניגש לנכס ומחזירה את זמן הגישה האחרון (ב-Unix מיקרו-שניות מאז תקופה של זמן מערכת) בכל שורה.

דוח פירוט הרשאות גישה של משתמשים

דוגמה נוספת לדוח שימושי הוא פירוט של גישות המשתמשים לפי 'גישה' מנגנון (למשל, ממשק משתמש של Google Analytics, API וכו').

ה-Micros של תקופת הגישה האחרונה כתובת האימייל של המשתמש מנגנון הגישה מספר הרשאות הגישה
1525220215028367 Alex@example.net Firebase 31
1525220215555778 Alex@example.net ממשק המשתמש של Google Analytics 1
1525220215022378 Bola@example.net ממשק המשתמש של Google Analytics 65
1525220215026389 Bola@example.net API של Google Analytics 894
1525220215025631 Charlie@example.net API של Google Analytics 67
1525220215068325 Mahan@example.net Google Ads 3

כדי ליצור את הדוח הזה, מאפיינים mostRecentAccessEpochTimeMicros, userEmail, accessMechanism וגם accessCount מדד.

הדוח מכיל שורה אחת לכל שילוב של משתמש/מנגנון גישה. המאפיין mostRecentAccessEpochTimeMicros מכיל את הפעם האחרונה שבה משתמש ניגשו לנכס באמצעות מנגנון הגישה שצוין.

הדוח 'סקירה כללית של גישה לנכס'

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

מזהה נכס שבוצעה אליו גישה שם נכס שבוצעה אליו גישה מנגנון הגישה מספר הרשאות הגישה
12345678 DemoApp Firebase 31
12345678 DemoApp ממשק המשתמש של Google Analytics 624
12345678 DemoApp Google Ads 83
12345678 DemoApp API של Google Analytics 1744

כדי ליצור את הדוח הזה, מאפיינים accessedPropertyId, accessedPropertyName, accessMechanism וגם accessCount מדד.

הדוח מכיל שורה אחת לכל שילוב של מזהה נכס/מנגנון גישה.

דוח גישות לנתונים נפרדים

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

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

מיקרו-שניות בשלב יוניקס (Unix epoch Time) כתובת האימייל של המשתמש מזהה נכס שבוצעה אליו גישה שם נכס שבוצעה אליו גישה כתובת IP של המשתמש מנגנון הגישה נתוני עלות שהוחזרו נתוני הכנסה שהוחזרו
1525220215025371 Bola@example.net 12345678 DemoApp 1.2.3.1 ממשק המשתמש של Google Analytics true true
1525220645645645 Mahan@example.net 12345678 DemoApp 1.2.3.5 ממשק המשתמש של Google Analytics false false
1525220211312322 Bola@example.net 12345678 DemoApp 11.22.33.11 Google Ads true false
1525220210234221 Alex@example.net 12345678 DemoApp 11.22.33.22 Firebase false false
1525220215028368 Alex@example.net 12345678 DemoApp 1.2.3.2 Google Ads false false
1525220214234231 Mahan@example.net 12345678 DemoApp 11.22.33.55 Google Ads true true
1525220423423452 Charlie@example.net 12345678 DemoApp 1.2.3.3 API של Google Analytics true false
1525220132312333 Mahan@example.net 12345678 DemoApp 1.2.3.5 Google Ads true true

כדי ליצור את הדוח הזה, מאפיינים epochTimeMicros, userEmail, accessedPropertyId, accessedPropertyName, userIP, accessMechanism, costDataReturned, revenueDataReturned.

ספריות לקוח

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

לפניכם דוגמה לשימוש בספריית הלקוח של Python שמריצה שאילתת גישה לנתונים ומדפיסים את התשובה.

Python

from datetime import datetime

from google.analytics.admin import AnalyticsAdminServiceClient
from google.analytics.admin_v1alpha.types import (
    AccessDateRange,
    AccessDimension,
    AccessMetric,
    RunAccessReportRequest,
)


def run_sample():
    """Runs the sample."""
    # TODO(developer): Replace this variable with your Google Analytics 4
    #  property ID (e.g. "123456") before running the sample.
    property_id = "YOUR-GA4-PROPERTY-ID"
    run_access_report(property_id)


def run_access_report(property_id: str, transport: str = None):
    """
    Runs an access report for a Google Analytics property. The report will
    aggregate over dimensions `userEmail`, `accessedPropertyId`,
    `reportType`, `revenueDataReturned`, `costDataReturned`,
    `userIP`, and return the access count, as well as the most recent access
    time for each combination.
    See https://developers.google.com/analytics/devguides/config/admin/v1/access-api-schema
    for the description of each field used in a data access report query.
    Args:
        property_id(str): The Google Analytics Property ID.
        transport(str): The transport to use. For example, "grpc"
            or "rest". If set to None, a transport is chosen automatically.
    """
    client = AnalyticsAdminServiceClient(transport=transport)
    request = RunAccessReportRequest(
        entity=f"properties/{property_id}",
        dimensions=[
            AccessDimension(dimension_name="userEmail"),
            AccessDimension(dimension_name="accessedPropertyId"),
            AccessDimension(dimension_name="reportType"),
            AccessDimension(dimension_name="revenueDataReturned"),
            AccessDimension(dimension_name="costDataReturned"),
            AccessDimension(dimension_name="userIP"),
            AccessDimension(dimension_name="mostRecentAccessEpochTimeMicros"),
        ],
        metrics=[AccessMetric(metric_name="accessCount")],
        date_ranges=[AccessDateRange(start_date="yesterday", end_date="today")],
    )

    access_report = client.run_access_report(request)

    print("Result:")
    print_access_report(access_report)


def print_access_report(response):
    """Prints the access report."""
    print(f"{response.row_count} rows received")
    for dimensionHeader in response.dimension_headers:
        print(f"Dimension header name: {dimensionHeader.dimension_name}")
    for metricHeader in response.metric_headers:
        print(f"Metric header name: {metricHeader.metric_name})")

    for rowIdx, row in enumerate(response.rows):
        print(f"\nRow {rowIdx}")
        for i, dimension_value in enumerate(row.dimension_values):
            dimension_name = response.dimension_headers[i].dimension_name
            if dimension_name.endswith("Micros"):
                # Convert microseconds since Unix Epoch to datetime object.
                dimension_value_formatted = datetime.utcfromtimestamp(
                    int(dimension_value.value) / 1000000
                )
            else:
                dimension_value_formatted = dimension_value.value
            print(f"{dimension_name}: {dimension_value_formatted}")

        for i, metric_value in enumerate(row.metric_values):
            metric_name = response.metric_headers[i].metric_name
            print(f"{metric_name}: {metric_value.value}")