You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何用Python调用Google API导出GA4受众维度userID

解决GA4通过Python API导出受众维度(user_id)的问题

错误原因分析

你遇到的TypeError核心问题有三点:

  1. 误用AudienceExport对象作为请求参数,get_audience_export方法需要的是GetAudienceExportRequest类型。
  2. 错误使用AudienceDimension配置导出维度,实际应使用标准的Dimension类型指定user_id。
  3. 受众导出是异步流程,需要先创建导出任务,等待任务完成后再从Google Cloud Storage(GCS)获取结果,而非直接同步获取数据。

正确实现代码

以下是完整的Python实现流程,包含创建导出任务、轮询任务状态、下载结果的步骤:

import time
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import (
    CreateAudienceExportRequest,
    GetAudienceExportRequest,
    Dimension,
    DateRange
)
from google.cloud import storage

# 配置参数
PROPERTY_ID = "123"  # 替换为你的GA4属性ID
AUDIENCE_ID = "456"  # 替换为你的受众ID
START_DATE = "2024-01-01"  # 替换为起始日期
END_DATE = "2024-01-31"    # 替换为结束日期
OUTPUT_FILE = "audience_user_ids.csv"  # 本地保存的文件名

# 初始化GA4 Data API客户端
client = BetaAnalyticsDataClient()

# 1. 创建受众导出任务
create_request = CreateAudienceExportRequest(
    parent=f"properties/{PROPERTY_ID}/audiences/{AUDIENCE_ID}",
    audience_export={
        "dimensions": [Dimension(name="user_id")],
        "date_range": DateRange(start_date=START_DATE, end_date=END_DATE)
    }
)

create_response = client.create_audience_export(create_request)
audience_export_name = create_response.name
print(f"创建导出任务成功,任务名称:{audience_export_name}")

# 2. 轮询等待任务完成
while True:
    get_request = GetAudienceExportRequest(name=audience_export_name)
    get_response = client.get_audience_export(get_request)

    if get_response.state == "SUCCEEDED":
        print("导出任务完成")
        break
    elif get_response.state == "FAILED":
        raise Exception(f"导出任务失败:{get_response.failure_reason}")
    
    print("任务处理中,等待60秒后重试...")
    time.sleep(60)

# 3. 从GCS下载导出结果
gcs_uri = get_response.output_config.gcs_destination.uri
# 解析GCS路径:拆分bucket和对象路径
bucket_name, object_path = gcs_uri.replace("gs://", "").split("/", 1)

# 初始化GCS客户端
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(object_path)

# 下载到本地文件
blob.download_to_filename(OUTPUT_FILE)
print(f"用户ID数据已保存到本地文件:{OUTPUT_FILE}")

关键注意事项

  • 权限配置:确保你的服务账号拥有以下权限:
    • analytics.audienceExports.create 和 analytics.audienceExports.get(GA4权限)
    • storage.objects.get(GCS读取权限)
  • user_id启用:确认你的GA4属性已经启用user_id维度,且前端代码正确追踪并发送用户ID数据。
  • 异步流程:受众导出任务处理时间取决于数据量,建议根据实际情况调整轮询间隔。

内容的提问来源于stack exchange,提问作者Hraklis Papas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 11:01:15