如何通过Google Analytics API批量创建带主机名过滤器的专属视图?
自动化创建Google Analytics视图及主机名过滤器的可行方案
绝对有办法自动化搞定这个!手动创建400个视图和过滤器确实太折磨人了,下面我分Universal Analytics(UA)和Google Analytics 4(GA4)两种场景,给你整理了靠谱的自动化方案,都是基于官方API实现的,高效又省心:
针对Universal Analytics(UA)的方案
虽然UA已经停止新数据收集,但如果你的属性还在维护现有数据,这个方案依然适用:
核心依赖:Google Analytics Management API
这是UA官方提供的管理API,支持批量创建视图、过滤器,以及关联过滤器到视图等操作。
具体步骤:
- 先搞定API权限和凭证:
- 登录Google Cloud控制台,新建一个项目,然后启用「Google Analytics Management API」
- 创建一个服务账号,下载对应的JSON密钥文件(这个是脚本认证用的核心凭证)
- 回到你的UA属性管理界面,给这个服务账号分配编辑权限——毕竟要创建视图和过滤器,权限得够才行
- 整理你的主机名单:把所有要处理的主机名(比如
abc.com、bcd.com)整理成CSV文件,每行一个主机名,方便脚本批量读取 - 写个Python脚本批量操作:
先安装依赖包:
然后参考下面的脚本框架(记得替换成你自己的参数):pip install google-api-python-client oauth2clientfrom googleapiclient.discovery import build from oauth2client.service_account import ServiceAccountCredentials import csv # 替换成你自己的配置 GA_PROPERTY_ID = "UA-XXXXXXXXX-X" # 你的UA属性ID SERVICE_ACCOUNT_KEY_PATH = "path/to/your/service-account-key.json" # 密钥文件路径 HOSTNAMES_CSV = "path/to/your/hostnames.csv" # 主机名CSV文件路径 # 服务账号认证 credentials = ServiceAccountCredentials.from_json_keyfile_name( SERVICE_ACCOUNT_KEY_PATH, scopes=["https://www.googleapis.com/auth/analytics.edit"] ) service = build('analytics', 'v3', credentials=credentials) # 读取所有主机名 with open(HOSTNAMES_CSV, 'r') as f: hostnames = [row[0].strip() for row in csv.reader(f)] # 循环处理每个主机名 for hostname in hostnames: view_name = f"专属视图 - {hostname}" print(f"正在处理 {hostname}...") # 1. 创建视图(UA里叫Profile) view = service.management().profiles().insert( accountId=GA_PROPERTY_ID.split('-')[1], # 从UA ID里提取账号ID webPropertyId=GA_PROPERTY_ID, body={ "name": view_name, "type": "WEB", "websiteUrl": f"https://{hostname}" } ).execute() view_id = view['id'] # 2. 创建主机名包含过滤器(只保留当前主机名的数据) filter = service.management().filters().insert( accountId=GA_PROPERTY_ID.split('-')[1], body={ "name": f"主机名过滤 - {hostname}", "type": "INCLUDE", "includeDetails": { "field": "HOSTNAME", "matchType": "EXACT", "expressionValue": hostname, "caseSensitive": False } } ).execute() filter_id = filter['id'] # 3. 把过滤器关联到刚才创建的视图 service.management().profileFilterLinks().insert( accountId=GA_PROPERTY_ID.split('-')[1], webPropertyId=GA_PROPERTY_ID, profileId=view_id, body={"filterRef": {"id": filter_id}} ).execute() print(f"{hostname} 的视图和过滤器创建完成!")
针对Google Analytics 4(GA4)的方案
GA4里没有“视图”这个概念,取而代之的是数据流和数据过滤器,要实现按主机名隔离数据的效果,可以这么做:
核心依赖:Google Analytics Admin API
这是GA4的官方管理API,专门用来操作GA4属性的数据流、过滤器等资源。
具体步骤:
- 同样先搞定API权限和凭证:
- 登录Google Cloud控制台,新建项目,启用「Google Analytics Admin API」
- 创建服务账号,下载JSON密钥文件
- 回到GA4属性管理界面,给服务账号分配编辑权限
- 整理主机名单:还是用CSV文件整理所有主机名
- 写Python脚本批量操作:
先安装依赖包:
参考下面的脚本框架(替换成你的配置):pip install google-analytics-adminfrom google.analytics.admin import AnalyticsAdminServiceClient from google.oauth2 import service_account import csv # 替换成你自己的配置 GA4_PROPERTY_ID = "properties/XXXXXXXXX" # 你的GA4属性ID,格式是properties/123456789 SERVICE_ACCOUNT_KEY_PATH = "path/to/your/service-account-key.json" HOSTNAMES_CSV = "path/to/your/hostnames.csv" # 服务账号认证 credentials = service_account.Credentials.from_service_account_file( SERVICE_ACCOUNT_KEY_PATH, scopes=["https://www.googleapis.com/auth/analytics.edit"] ) client = AnalyticsAdminServiceClient(credentials=credentials) # 读取主机名列表 with open(HOSTNAMES_CSV, 'r') as f: hostnames = [row[0].strip() for row in csv.reader(f)] # 循环处理每个主机名 for hostname in hostnames: stream_name = f"数据流 - {hostname}" print(f"正在处理 {hostname}...") # 1. 创建Web数据流 stream = client.create_web_data_stream( parent=GA4_PROPERTY_ID, web_data_stream={ "display_name": stream_name, "default_uri": f"https://{hostname}" } ) stream_id = stream.name # 2. 创建数据过滤器,只保留当前主机名的数据 client.create_data_filter( parent=GA4_PROPERTY_ID, data_filter={ "display_name": f"主机名过滤 - {hostname}", "filter_type": "INCLUDE", "field_name": "host_name", "string_filter": { "match_type": "EXACT", "value": hostname, "case_sensitive": False }, "data_stream_filter": { "data_stream_ids": [stream_id] } } ) print(f"{hostname} 的数据流和过滤器创建完成!")
一些实用提示
- 先测试再批量:先拿1-2个主机名跑一遍脚本,确认创建的视图/数据流、过滤器符合预期,再批量处理400个,避免出问题
- 加错误处理:脚本里可以加上
try-except块,比如某个主机名处理失败时,跳过它继续处理下一个,不会导致整个任务中断 - 权限要到位:一定要确保服务账号有足够的权限,不然脚本会报错
- 优先选GA4:如果是新部署的站点,直接用GA4方案就行,UA已经停止新数据收集了
内容的提问来源于stack exchange,提问作者Nandan Gupta
相关产品推荐
相关产品推荐

