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

YouTube Analytics API查询返回空Rows问题求助

解决YouTube Analytics API返回空rows数组的问题

看起来你遇到的问题是之前正常的API查询突然返回空数据了,我来帮你排查几个关键点:

可能的原因及解决方案

1. 视频归属与筛选器验证

首先要确认你在filters里指定的视频ID 确实属于ids参数里的频道(UCU_N4jDOub9J8splDAPiMWA)。如果其中某个视频不属于该频道,或者视频ID有误,查询会直接返回空结果。你可以直接在YouTube上搜索这些视频ID,查看它们的所属频道是否匹配。

2. 日期范围的合理性

你当前设置的日期是2018-01-01到2018-05-01,这段时间距离现在太久,可能这些视频在当时还未发布,或者历史数据已被清理?建议先换成最近的、确定有数据的日期范围(比如近30天),同时注意YouTube Analytics的数据有2-3天的延迟,不要选择昨天或今天的日期。

另外,YouTube Analytics使用的是UTC时区,如果你的视频数据是在本地时间的某个日期,但对应UTC是前一天,也可能导致查询不到数据。可以尝试把startDate提前1天测试。

3. 查询参数的一致性

你的metrics参数包含dislikes,但CSV表头里没有这个字段——虽然这不会直接导致空rows,但会导致后续写入CSV时数据不匹配。建议修正表头或者去掉dislikes指标,保持参数和输出的一致性。

4. 简化查询排查问题

先去掉filters参数,只查询整个频道的每日数据:

execute_api_request(
    youtubeAnalytics.reports().query,
    ids='channel==UCU_N4jDOub9J8splDAPiMWA',
    startDate='2024-05-01',
    endDate='2024-06-01',
    metrics='views,comments,likes,estimatedMinutesWatched,averageViewDuration',
    dimensions='day'
)

如果这个查询能返回数据,说明问题出在filters里的视频ID;如果还是空,那可能是频道本身在该日期范围内没有数据,或者API权限/配额有问题(不过配额用完会返回明确的错误,不是空数组)。

完善你的代码

另外,你的execute_api_request函数目前没有把查询到的rows写入CSV,即使有数据也无法保存。可以修改这个函数:

def execute_api_request(client_library_function, **kwargs):
    response = client_library_function(
        **kwargs
    ).execute()
    print(response)
    
    # 处理CSV写入,用with语句自动管理文件
    with open('video_result.csv','w', newline='') as csvFile:
        csvWriter = csv.writer(csvFile)
        # 修正表头,加入dislikes(如果保留该指标)
        csvWriter.writerow(["views","comments","likes","dislikes","estimatedMinutesWatched","averageViewDuration"])
        
        # 写入数据行,先判断是否有rows数据
        if 'rows' in response and response['rows']:
            for row in response['rows']:
                csvWriter.writerow(row)

这样如果查询到数据,就能正确保存到CSV里了。

内容的提问来源于stack exchange,提问作者Matthew Dickens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:08:11