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

使用ga:browserVersion段过滤器排除流量触发GA API V4 HttpError 400

问题描述

编写Python脚本拉取Google Analytics(GA)某视图的年初至今(YTD)数据,该视图已过滤机器人流量,但2022年4月仍有大量此类流量残留。尝试通过ga:browserVersion维度的段过滤器排除该流量时,触发了HttpError 400错误。

错误信息

return (<HttpError 400 when requesting https://analyticsreporting.googleapis.com/v4/reports:batchGet?alt=json returned "Invalid JSON payload received. Unknown name "not" at 'report_requests[0].segments[0].dynamic_segment.user_segment.segment_filters[0].simple_segment.or_filters_for_segment.segment_filter_clauses[0].dimension_filter': Cannot find field.", 'description': 'Invalid JSON payload received. Unknown name "not" at 'report_requests[0].segments[0].dynamic_segment.user_segment.segment_filters[0].simple_segment.or_filters_for_segment.segment_filter_clauses[0].dimension_filter': Cannot find field.'>
)

相关代码

def get_report(analytics, start_date, end_date_delta, pageToken = None):
  """Queries the Analytics Reporting API V4.

  Args:
    analytics: An authorized Analytics Reporting API V4 service object.
  Returns:
    The Analytics Reporting API V4 response.
  """
  return analytics.reports().batchGet(
      body={
        'reportRequests': [
        {
          'viewId': VIEW_ID,
          'pageSize': 10000,
          'pageToken': pageToken,
          'dateRanges': [{'startDate': start_date.strftime("%Y-%m-%d") , 'endDate': (start_date+end_date_delta).strftime("%Y-%m-%d")}],           
           'metrics': [{'expression': 'ga:pageviews'}, {'expression': 'ga:sessions'}, {'expression': 'ga:pageviewsPerSession'}, {'expression': 'ga:totalEvents'}, {'expression': 'ga:uniqueEvents'}, {'expression': 'ga:timeOnPage'}, {'expression': 'ga:users'}, {'expression': 'ga:newUsers'}],
           'dimensions': [{'name':'ga:date'}, {'name':'ga:sourceMedium'}, {'name':'ga:pageTitle'}, {'name':'ga:eventLabel'}, {'name':'ga:eventCategory'}, {'name':'ga:adContent'}, {'name':'ga:segment'}, {'name':'ga:campaign'}, {'name':'ga:dimension8'} ],
           'segments':[{
                'dynamicSegment':
      {
        'name': 'Apr Bot Traffic',
        'userSegment':
        {
          'segmentFilters':[
          {
            'simpleSegment':
            {
              'orFiltersForSegment':
              {
                'segmentFilterClauses': [
                {
                  'dimensionFilter':
                  {
                    'dimensionName':'ga:browserVersion',
                    'not':True,
                    'operator':'EXACT',
                    'expressions':'80.0.3987.163'
                  }
                }]
              }
            }
          }]
        }
      }
      }]
      }]
      }
  ).execute()

解决方案

  • GA Reporting API V4的维度过滤器中不存在not字段,要实现取反逻辑,需将not:True替换为negation:True。
  • 同时,orFiltersForSegment要求是数组(列表)类型,当前代码中它是一个字典,不符合API格式规范,需调整为数组包裹的结构。

修正后的segments部分代码如下:

'segments':[{
    'dynamicSegment':
    {
      'name': 'Apr Bot Traffic',
      'userSegment':
      {
        'segmentFilters':[
        {
          'simpleSegment':
          {
            'orFiltersForSegment': [
            {
              'segmentFilterClauses': [
              {
                'dimensionFilter':
                {
                  'dimensionName':'ga:browserVersion',
                  'negation': True,
                  'operator':'EXACT',
                  'expressions':'80.0.3987.163'
                }
              }]
            }]
          }
        }]
      }
    }
}]

内容的提问来源于stack exchange,提问作者Akash Agrawal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 14:24:18