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

使用Python调用DV360 API获取性能指标时遭遇AttributeError错误求助

使用Python调用DV360 API获取性能指标时遭遇AttributeError错误求助

嘿,我来帮你搞定这个问题!你遇到的AttributeError: 'Resource' object has no attribute 'queries'其实是个常见的API资源调用错误,咱们一步步解决它,顺便帮你顺利拿到想要的性能指标。

错误根源:用错了DV360 API的资源端点

DV360的Display Video v3版本API里根本没有queries这个资源,你原代码里的service.queries().create()是不存在的调用方式。根据你的需求(生成一次性或可复用的KPI报告),有两个正确的API方法可选:

  • 如果想创建可复用的查询(后续能重复运行):用savedQueries()资源
  • 如果只想直接跑一次报告拿结果:用reportTools().runReport()方法

解决方案1:创建可复用的保存查询并运行

这是最贴近你原代码逻辑的方案,修正资源调用后,还能添加轮询状态获取报告下载链接的逻辑:

from google.oauth2 import service_account
from googleapiclient.discovery import build
import time

# 替换为你的服务账号密钥路径
SERVICE_ACCOUNT_FILE = "service_account.json"
SCOPES = ['https://www.googleapis.com/auth/display-video']

# 认证部分没问题,保留即可
credentials = service_account.Credentials.from_service_account_file(
    SERVICE_ACCOUNT_FILE, scopes=SCOPES)
service = build('displayvideo', 'v3', credentials=credentials)

# 你的查询参数可以保留,注意替换真实的广告客户ID
query = {
    "metadata": {
        "title": "KPI_Report",
        "dataRange": {"range": "LAST_30_DAYS"},
        "format": "CSV"
    },
    "params": {
        "type": "STANDARD",
        "groupBys": [
            "FILTER_DATE",
            "FILTER_PLATFORM",
            "FILTER_MONTH",
            "FILTER_YEAR",
            "FILTER_ADVERTISER_NAME",
            "FILTER_CAMPAIGN_NAME",
            "FILTER_MEDIA_TYPE"
        ],
        "metrics": [
            "METRIC_IMPRESSIONS",
            "METRIC_CLICKS",
            "METRIC_TOTAL_CONVERSIONS",
            "METRIC_MEDIA_COST_ADVERTISER",
            "METRIC_GMAIL_CLICKS",
            "METRIC_CTR",
            "METRIC_CPM",
            "METRIC_CPC",
            "METRIC_CPV",
            "METRIC_CR",
            "METRIC_VIEWS",
            "METRIC_VTR",
            "METRIC_COMPLETE_VIDEO_VIEWS",
            "METRIC_COMPLETE_VIEW_RATE",
            "METRIC_CPCV",
            "METRIC_RICH_MEDIA_ENGAGEMENTS",
            "METRIC_FREQUENCY",
            "METRIC_REACH"
        ],
        "filters": [
            {"type": "FILTER_ADVERTISER", "value": "YOUR_ADVERTISER_ID"}  # 替换为真实数字ID
        ]
    },
    "schedule": {"frequency": "ONE_TIME"}
}

# 修正:用savedQueries替换不存在的queries
query_response = service.savedQueries().create(body=query).execute()
saved_query_id = query_response.get('savedQueryId')
print(f"已创建保存查询,ID:{saved_query_id}")

# 运行这个保存的查询
report_run = service.savedQueries().run(savedQueryId=saved_query_id).execute()
report_run_id = report_run.get('reportRunId')

# 轮询报告生成状态(DV360生成报告需要一点时间)
print("等待报告生成...")
while True:
    report_status = service.reportRuns().get(reportRunId=report_run_id).execute()
    if report_status['state'] == 'REPORT_RUN_STATE_DONE':
        download_url = report_status['metadata']['googleCloudStoragePath']
        print(f"报告已生成!下载地址:{download_url}")
        break
    elif report_status['state'] == 'REPORT_RUN_STATE_FAILED':
        print("报告生成失败,请检查查询参数或权限!")
        break
    time.sleep(10)  # 每10秒检查一次状态

解决方案2:直接运行一次性报告(无需保存查询)

如果不需要复用查询,直接用reportTools().runReport()更简洁,注意这里的维度和指标命名略有不同(不需要加FILTER_或METRIC_前缀):

# 认证部分和上面一致,省略...

# 一次性报告的查询参数
one_time_report_query = {
    "dateRange": {"range": "LAST_30_DAYS"},
    "dimensions": [
        "DATE",
        "PLATFORM",
        "MONTH",
        "YEAR",
        "ADVERTISER_NAME",
        "CAMPAIGN_NAME",
        "MEDIA_TYPE"
    ],
    "metrics": [
        "IMPRESSIONS",
        "CLICKS",
        "TOTAL_CONVERSIONS",
        "MEDIA_COST_ADVERTISER",
        # 其他你需要的指标直接写名称即可
    ],
    "advertiserId": "YOUR_ADVERTISER_ID",  # 替换为真实数字ID
    "format": "CSV"
}

# 直接运行报告
report_run = service.reportTools().runReport(body=one_time_report_query).execute()
report_run_id = report_run.get('reportRunId')

# 同样轮询状态获取下载链接(代码和上面一致,省略...)

额外注意事项

  1. 权限验证:确保你的服务账号已经被添加到对应的DV360广告客户中,并且分配了至少「查看者」或「报告编辑者」的角色,否则会出现权限错误。
  2. 参数正确性:维度和指标的枚举值要严格匹配DV360 API的要求,不能拼错单词,大小写也要正确。
  3. 广告客户ID:必须填写真实的数字ID,不是广告客户名称,你可以在DV360界面的广告客户设置里找到这个ID。

这样修改后,你不仅能解决AttributeError的问题,还能顺利生成包含曝光、点击、转化等你需要的所有KPI指标的报告啦!

备注:内容来源于stack exchange,提问作者Bits

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 15:48:06