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

如何通过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权限和凭证:
    1. 登录Google Cloud控制台,新建一个项目,然后启用「Google Analytics Management API」
    2. 创建一个服务账号,下载对应的JSON密钥文件(这个是脚本认证用的核心凭证)
    3. 回到你的UA属性管理界面,给这个服务账号分配编辑权限——毕竟要创建视图和过滤器,权限得够才行
  • 整理你的主机名单:把所有要处理的主机名(比如abc.com、bcd.com)整理成CSV文件,每行一个主机名,方便脚本批量读取
  • 写个Python脚本批量操作:
    先安装依赖包:
    pip install google-api-python-client oauth2client
    
    然后参考下面的脚本框架(记得替换成你自己的参数):
    from 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权限和凭证:
    1. 登录Google Cloud控制台,新建项目,启用「Google Analytics Admin API」
    2. 创建服务账号,下载JSON密钥文件
    3. 回到GA4属性管理界面,给服务账号分配编辑权限
  • 整理主机名单:还是用CSV文件整理所有主机名
  • 写Python脚本批量操作:
    先安装依赖包:
    pip install google-analytics-admin
    
    参考下面的脚本框架(替换成你的配置):
    from 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 06:41:10