将 Google-Ads API GoogleAdsRow 转换为 ,CSV?

Posted

技术标签:

【中文标题】将 Google-Ads API GoogleAdsRow 转换为 ,CSV?【英文标题】:Convert Google-Ads API GoogleAdsRow to ,CSV? 【发布时间】:2020-01-16 22:48:11 【问题描述】:

Google Ads API,他们的新版 Google Ads API 以一种名为“GoogleAdsRow”的格式返回数据。我根本没有发现以这种格式呈现的信息有任何用处,而且非常令人困惑。我想将我的文件打印为基本的 .csv 格式,但据我所知,没有任何类型的分隔符。到目前为止,我只能将每一整行打印为一个单元格。没有帮助:-)。

我的主要功能如下所示。我提供了两个示例,说明我尝试过的注释块标识了这两种尝试:

def main(client, customer_id, page_size):
    ga_service = client.get_service('GoogleAdsService', version='v2')

    query = ('SELECT ad_group.id, ad_group_criterion.type, '
             'ad_group_criterion.criterion_id, '
             'ad_group_criterion.keyword.text, '
             'ad_group_criterion.keyword.match_type FROM ad_group_criterion '
             'WHERE ad_group_criterion.type = KEYWORD')

    results = ga_service.search(customer_id, query=query, page_size=page_size)

    try:
        with open(path, "w", encoding = "utf-8", newline = "") as f:
        #with open(path, "w") as csv:
            csv_writer = csv.writer(f, delimiter=',')
            for row in results:
                campaign = row.campaign           
                csv_writer.writerow([row]) #Prints entire returned row as a single cell
                csv_writer.writerow(row) #Tells me there is no delimiter

可迭代错误如下

<ipython-input-15-e736ee2d05c9> in main(client, customer_id, page_size)
     17                 campaign = row.campaign
     18                 #csv_writer.writerow([row]) #Prints entire returned row as a single cell
---> 19                 csv_writer.writerow(row) #Tells me there is no delimiter
     20 
     21 

Error: iterable expected, not GoogleAdsRow

【问题讨论】:

【参考方案1】:

您需要将返回的各个行项目分开,并将它们分别添加到 CSV 中。每列一个。

根据您的回复,您需要提取返回的 google 行的元素并将它们放入您的 CSV 中的相应行。

row.campaign.value, 
row.segments.date.value,
row.metrics.cost_micros.value / 1000000,    
row.metrics.clicks.value etc.

不幸的是,您不能直接从 google 行写入 CSV,因为它是一个 protobuff,并且需要根据需要提取行的属性。

【讨论】:

谢谢,这完全有道理。这就是我必须做的。

以上是关于将 Google-Ads API GoogleAdsRow 转换为 ,CSV?的主要内容,如果未能解决你的问题,请参考以下文章

Google Ads API - 是不是存在 REST API?

如何通过 Google Ads API 获取已注销的帐户?

尽管使用了刷新令牌,但 Google Ads API 仍显示“令牌已过期或撤销”

嵌入在 HTML5 Google 广告中的表单/调查 - 可能吗?

如何在 asp.net 中为谷歌广告线索表单开发网络挂钩

AWS Cloudformation 将 API 密钥链接到 API 网关