您可以使用 Admin API v1 runAccessReport 方法建立資料存取報表。這份報表會顯示每次使用者讀取 Google Analytics 資料的情形。資料存取記錄最多會保留 2 年。只有具備管理員角色的使用者,才能查看資料存取報表。
使用用戶端程式庫要求資料存取報表
如要開始使用資料存取報表,最快的方法就是使用用戶端程式庫。
如要瞭解如何安裝及設定 Google Analytics 用戶端程式庫,請參閱快速入門指南。
以下是使用 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}")
與 Core 報表共用的功能
資料存取報表要求的語意與許多常見功能的核心報表要求相同。舉例來說,分頁、維度篩選器和日期範圍在兩種報表類型中都會以相同方式運作。
請先參閱 Data API v1 中核心報表的總覽,然後返回本頁面,進一步瞭解資料存取報表。
建立資料存取報表
使用 runAccessReport 方法要求資料存取報表。
選取報表實體
與 Data API v1 的核心報表功能類似,Google Analytics Admin API v1 的 runAccessReport 方法需要在網址要求路徑中以 properties/GA_PROPERTY_ID 的形式指定 Google Analytics 資源 ID,例如:
  POST  https://analyticsadmin.googleapis.com/v1beta/properties/GA_PROPERTY_ID:runAccessReport
系統會根據指定 Google Analytics 資源的 Google Analytics 資料存取記錄,產生最終的資料存取報表。
如果您使用的是 Admin API 用戶端程式庫,就不需要手動操作要求網址路徑。大多數 API 用戶端都會提供 property 參數,該參數預期字串格式為 properties/GA_PROPERTY_ID。如需用戶端程式庫的使用範例,請參閱本頁開頭的程式碼片段。
選擇維度和指標
維度可描述及分組資源的存取資料。舉例來說,維度 userEmail 會指出存取報表資料的使用者電子郵件地址。報表回應中的維度值為字串。
指標代表報表的量化評估資料,accessCount 指標會傳回資料存取記錄的總數。
如要查看資料存取報表要求中可用的維度和指標名稱完整清單,請參閱「資料存取架構」。
索取報表
如要要求資料存取報表,請建構 RunAccessReportRequest 物件。建議您先從下列要求參數開始:
- 日期範圍欄位中至少有一個有效的項目。
- dimensions 欄位中至少有一個有效的項目。
- 如果不使用 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"
    }
  ]
}
閱讀回應
資料存取報表回應主要包含標頭和資料列。標頭包含 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
}
依存取記錄篩選
使用 RunAccessReportRequest 物件的 dimensionFilter 欄位,將報表回應限制為符合篩選器的特定維度值。
以下範例會根據個別資料存取記錄產生報表,並篩選電子郵件為 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"
      }
    }
  }
}
同樣地,RunAccessReportRequest 物件的 metricFilter 欄位可用來限制報表回應,只顯示符合篩選器的特定指標值。
以下範例會產生報表,其中包含電子郵件和存取次數,這些資料來自存取指定資源超過 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 建立的範例存取報表:
| 最近一次存取的 Unix Epoch 時間 (以微秒為單位) | 使用者電子郵件地址 | 存取次數 | 
|---|---|---|
| 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 等) 細分使用者存取情況。
| 最近一次存取的 Unix Epoch 時間 (以微秒為單位) | 使用者電子郵件地址 | 存取機制 | 存取次數 | 
|---|---|---|---|
| 1525220215028367 | Alex@example.net | Firebase | 31 | 
| 1525220215555778 | Alex@example.net | Google Analytics 使用者介面 | 1 | 
| 1525220215022378 | Bola@example.net | Google Analytics 使用者介面 | 65 | 
| 1525220215026389 | Bola@example.net | Google Analytics API | 894 | 
| 1525220215025631 | Charlie@example.net | Google Analytics API | 67 | 
| 1525220215068325 | Mahan@example.net | Google Ads | 3 | 
您可以查詢維度 mostRecentAccessEpochTimeMicros、userEmail、accessMechanism 和 accessCount
指標,產生這份報表。
報表中會列出每個使用者/存取機制組合的資料列。mostRecentAccessEpochTimeMicros 維度包含使用者上次使用指定存取機制存取資源的時間。
資源存取權總覽
您可以為資源產生報表,而不需要細分個別使用者。舉例來說,下列報表會說明使用不同存取機制存取資源的頻率:
| 存取的資源 ID | 存取的資源名稱 | 存取機制 | 存取次數 | 
|---|---|---|---|
| 12345678 | DemoApp | Firebase | 31 | 
| 12345678 | DemoApp | Google Analytics 使用者介面 | 624 | 
| 12345678 | DemoApp | Google Ads | 83 | 
| 12345678 | DemoApp | Google Analytics API | 1744 | 
您可以查詢維度 accessedPropertyId、accessedPropertyName、accessMechanism 和 accessCount
指標,產生這份報表。
報表中每個資源 ID/存取機制組合都會包含一列。
個人資料存取權
如要產生每個資料列皆根據個別資料存取記錄的報表,請在查詢中省略 mostRecentAccessEpochTimeMicros 維度,改用 epochTimeMicros 維度。由於報表的每列都包含單一資料存取事件的相關資訊,因此您不必查詢 accessCount 指標。
下列報表包含使用者每次存取指定資源的詳細資訊。
| Unix 紀元時間 (以微秒為單位) | 使用者電子郵件地址 | 存取的資源 ID | 存取的資源名稱 | 使用者 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 | Google Analytics API | true | false | 
| 1525220132312333 | Mahan@example.net | 12345678 | DemoApp | 1.2.3.5 | Google Ads | true | true | 
您可以查詢維度 epochTimeMicros、userEmail、accessedPropertyId、accessedPropertyName、userIP、accessMechanism、costDataReturned、revenueDataReturned,產生這份報表。