Google Analytics Admin API v1 به شما امکان می دهد با استفاده از روش runAccessReport
به گزارشات دسترسی داشته باشید. این گزارش سوابقی از هر بار خواندن داده های گزارش Google Analytics توسط کاربر ارائه می دهد. سوابق دسترسی تا 2 سال حفظ می شود. گزارش های دسترسی به داده ها فقط برای کاربرانی که نقش سرپرست دارند در دسترس است.
ایجاد گزارش دسترسی به داده
گزارش دسترسی به داده ها با روش runAccessReport ارائه می شود.
ویژگی های مشترک با گزارش های اصلی
درخواست های گزارش دسترسی به داده برای بسیاری از ویژگی های مشترک معنایی مشابه با درخواست های گزارش اصلی دارند. برای مثال صفحهبندی ، فیلترهای ابعاد ، مشخصات محدوده تاریخ در گزارشهای دسترسی به داده مانند گزارشهای اصلی رفتار میکنند.
با نمای کلی عملکرد گزارش اصلی Data API v1 آشنا شوید، زیرا بقیه این سند بر روی ویژگیهای خاص درخواستهای گزارش دسترسی به داده تمرکز خواهد کرد.
انتخاب یک نهاد گزارشگر
مشابه عملکرد اصلی گزارشدهی Data API v1، روش runAccessReport API Admin Google Analytics 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
ایجاد شود:
جدیدترین ریزگردهای عصر دسترسی | ایمیل کاربر | تعداد دسترسی |
---|---|---|
1525220215025371 | Bola@example.net | 5 |
1525220215028361 | Alex@example.net | 36 |
1525220215027671 | Charlie@example.net | 1153 |
1525220215027341 | Mahan@example.net | 1 |
این گزارش را می توان با جست و جوی ابعاد mostRecentAccessEpochTimeMicros
، userEmail
و متریک accessCount
ایجاد کرد. این گزارش شامل یک ردیف به ازای هر کاربر است: بعد mostRecentAccessEpochTimeMicros
سوابق دسترسی به دادهها را برای هر کاربری که به ویژگی دسترسی دارد جمعآوری میکند و آخرین زمان دسترسی (بر حسب میکروثانیه یونیکس از زمان دوره ) را برای هر ردیف برمیگرداند.
گزارش خرابی دسترسی کاربر
مثال دیگری از یک گزارش مفید، تفکیک دسترسیهای کاربر بر اساس مکانیسم دسترسی است (مثلاً رابط کاربری Google Analytics، API و غیره).
جدیدترین ریزگردهای عصر دسترسی | ایمیل کاربر | مکانیسم دسترسی | تعداد دسترسی |
---|---|---|---|
1525220215028367 | Alex@example.net | Firebase | 31 |
1525220215555778 | Alex@example.net | رابط کاربری گوگل آنالیتیکس | 1 |
1525220215022378 | Bola@example.net | رابط کاربری گوگل آنالیتیکس | 65 |
1525220215026389 | Bola@example.net | Google Analytics API | 894 |
1525220215025631 | Charlie@example.net | Google Analytics API | 67 |
1525220215068325 | Mahan@example.net | تبلیغات گوگل | 3 |
این گزارش را می توان با جست و جوی ابعاد mostRecentAccessEpochTimeMicros
، userEmail
، accessMechanism
و متریک accessCount
تولید کرد.
این گزارش شامل یک ردیف برای هر ترکیب کاربر/مکانیسم دسترسی است. بعد mostRecentAccessEpochTimeMicros
حاوی آخرین باری است که کاربر با استفاده از مکانیسم دسترسی مشخص شده به ویژگی دسترسی پیدا کرده است.
گزارش نمای کلی دسترسی به اموال
امکان ایجاد گزارش برای یک ملک بدون تجزیه به تک تک کاربران وجود دارد. برای مثال، گزارش زیر بیان میکند که هر چند وقت یکبار به یک ویژگی با استفاده از مکانیسمهای دسترسی مختلف دسترسی پیدا میشود:
شناسه املاک دسترسی پیدا کرد | نام ملک مورد دسترسی | مکانیسم دسترسی | تعداد دسترسی |
---|---|---|---|
12345678 | Demo App | Firebase | 31 |
12345678 | Demo App | رابط کاربری گوگل آنالیتیکس | 624 |
12345678 | Demo App | تبلیغات گوگل | 83 |
12345678 | Demo App | Google Analytics API | 1744 |
این گزارش را می توان با جست و جوی ابعاد accessedPropertyId
, accessedPropertyName
, accessMechanism
و متریک accessCount
تولید کرد.
این گزارش شامل یک ردیف برای هر ترکیب شناسه ویژگی/مکانیسم دسترسی است.
گزارش دسترسی به داده های فردی
برای ایجاد گزارشی که در آن هر ردیف بر اساس یک رکورد دسترسی به داده جداگانه است، بعد mostRecentAccessEpochTimeMicros
را از یک پرس و جو حذف کنید و به جای آن از بعد epochTimeMicros
استفاده کنید. نیازی به پرس و جو در متریک accessCount
نیست، زیرا هر ردیف گزارش حاوی اطلاعاتی در مورد یک رخداد دسترسی به داده است.
گزارش زیر حاوی اطلاعات دقیق در مورد هر بار دسترسی کاربر به ویژگی مشخص شده است.
Unix Epoch Time Micros | ایمیل کاربر | شناسه املاک دسترسی پیدا کرد | نام ملک مورد دسترسی | IP کاربر | مکانیسم دسترسی | داده های هزینه برگشتی | داده های درآمد برگشتی |
---|---|---|---|---|---|---|---|
1525220215025371 | Bola@example.net | 12345678 | Demo App | 1.2.3.1 | رابط کاربری گوگل آنالیتیکس | درست است | درست است |
1525220645645645 | Mahan@example.net | 12345678 | Demo App | 1.2.3.5 | رابط کاربری گوگل آنالیتیکس | نادرست | نادرست |
1525220211312322 | Bola@example.net | 12345678 | Demo App | 11.22.33.11 | تبلیغات گوگل | درست است | نادرست |
1525220210234221 | Alex@example.net | 12345678 | Demo App | 11.22.33.22 | Firebase | نادرست | نادرست |
1525220215028368 | Alex@example.net | 12345678 | Demo App | 1.2.3.2 | تبلیغات گوگل | نادرست | نادرست |
1525220214234231 | Mahan@example.net | 12345678 | Demo App | 11.22.33.55 | تبلیغات گوگل | درست است | درست است |
1525220423423452 | Charlie@example.net | 12345678 | Demo App | 1.2.3.3 | Google Analytics API | درست است | نادرست |
1525220132312333 | Mahan@example.net | 12345678 | Demo App | 1.2.3.5 | تبلیغات گوگل | درست است | درست است |
این گزارش را می توان با جست و جوی ابعاد epochTimeMicros
، userEmail
، accessedPropertyId
، accessedPropertyName
، userIP
، accessMechanism
، costDataReturned
، revenueDataReturned
تولید کرد.
کتابخانه های مشتری
برای توضیح نحوه نصب و پیکربندی کتابخانه های سرویس گیرنده، به راهنمای شروع سریع مراجعه کنید.
در اینجا یک مثال با استفاده از کتابخانه کلاینت پایتون آورده شده است که یک کوئری دسترسی به داده را اجرا می کند و پاسخ را چاپ می کند.
پایتون
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}")