通过 AdWords API 获取广告系列统计信息(例如点击次数、点击率、每次点击费用等)

Posted

技术标签:

【中文标题】通过 AdWords API 获取广告系列统计信息(例如点击次数、点击率、每次点击费用等)【英文标题】:Getting campaign stats (e.g. Clicks, CTR, CPC, etc.) via AdWords API 【发布时间】:2015-10-08 06:41:52 【问题描述】:

我目前正在尝试获取特定广告系列的广告系列统计信息,例如点击次数、展示次数、点击率、平均每次点击费用等。不幸的是,我找不到如何通过 AdWords API 进行操作。

到目前为止,我发现的是,

    也许,在早期版本的CampaignService 中,我们可以通过执行$campaign->campaignStats 之类的操作来获取统计信息。不幸的是,我使用的是V201506,其中没有campaignStats 对象/变量。 我可能可以使用“CAMPAIGN_PERFORMANCE_REPORT”获取这些统计信息,但需要下载,我不想下载报告。我只想返回一个数组或类似的东西,以便我可以处理它。另外,我不想给出任何时间框架,我只想返回该活动的所有时间统计数据。有可能吗?

如果有人可以帮助我,我将不胜感激。在这里呆了几个小时,浏览了整个 AdWords API 文档,但不明白什么是最好和最简单的方法。

【问题讨论】:

【参考方案1】:

现在,Adwords API 仅允许通过报告服务进行统计。 并且可以使用两种方法获取统计信息。

1) 通过使用所描述的报告服务 here

2) 您可以使用 Adwords 查询语言。 See this

【讨论】:

如何获得使用 AWQL 和 CampaignService 的成本? 确实——你如何使用 AWQL 获得成本(或其他字段)——你能添加一个例子吗?【参考方案2】:

我不知道你是否还需要这个,但我找到了解决方案的 API V201806。在这个版本的 API 中存在 getAsString() 函数,它以字符串形式返回数据而不是下载文件,我以 XML 格式请求数据,并在 php 中将响应转换为 XML 对象。

这是我使用的代码:

class DownloadCriteriaReportWithAwql 

public static function runExample(AdWordsSession $session, $reportFormat)

    // Create report query to get the data for last 7 days.
    $query = (new ReportQueryBuilder())
        ->select([
            'CampaignId',
            'AdGroupId',
            'Id',
            'Criteria',
            'CriteriaType',
            'Impressions',
            'Clicks',
            'Cost',
            'Conversions'
        ])
        ->from(ReportDefinitionReportType::CRITERIA_PERFORMANCE_REPORT)
        ->where('Status')->in(['ENABLED'])
        ->duringDateRange(ReportDefinitionDateRangeType::LAST_7_DAYS)
        ->build();
    // Download report as a string.
    $reportDownloader = new ReportDownloader($session);
    // Optional: If you need to adjust report settings just for this one
    // request, you can create and supply the settings override here.
    // Otherwise, default values from the configuration
    // file (adsapi_php.ini) are used.
    $reportSettingsOverride = (new ReportSettingsBuilder())->includeZeroImpressions(false)->build();

    $reportDownloadResult = $reportDownloader->downloadReportWithAwql(
        sprintf('%s', $query),
        $reportFormat,
        $reportSettingsOverride
    );
    //print "Report was downloaded and printed below:\n";
    $datos = $reportDownloadResult->getAsString();
    return ($datos);

public static function main()
    // Generate a refreshable OAuth2 credential for authentication.
    $oAuth2Credential = (new OAuth2TokenBuilder())->fromFile()->build();
    // See: AdWordsSessionBuilder for setting a client customer ID that is
    // different from that specified in your adsapi_php.ini file.
    // Construct an API session configured from a properties file and the
    // OAuth2 credentials above.
    $session = (new AdWordsSessionBuilder())
        ->fromFile()
        ->withOAuth2Credential($oAuth2Credential)
        ->build();
    $string = self::runExample($session, DownloadFormat::XML);
    $xml = new \SimpleXMLElement($string);
    return $xml;

【讨论】:

【参考方案3】:

这个问题是在 2015 年提出的,此后他们将 API 重命名为 Google Ads API。当前版本是V6,获取点击次数、CTR、CPC 等指标比较简单。

文档here 指出:

此页面显示所有可以放在与活动字段相同的 SELECT 子句中的指标和细分

基于获得活动和点击的 AWQL 将如下所示(经过测试):

$query = "SELECT campaign.id, campaign.name, campaign.status, metrics.clicks FROM campaign ORDER BY campaign.name"

PHP 中如何遍历结果的示例:

$stream = $googleAdsServiceClient->searchStream($customerId, $query);

    foreach ($stream->iterateAllElements() as $googleAdsRow) 
        /** @var GoogleAdsRow $googleAdsRow */

        $data['campaigns'][] = [
            'id'     => $googleAdsRow->getCampaign()->getId(),
            'clicks' => $googleAdsRow->getMetrics()->getClicks(),
        ];
    

【讨论】:

以上是关于通过 AdWords API 获取广告系列统计信息(例如点击次数、点击率、每次点击费用等)的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Google Adwords API 从广告系列中获取否定关键字列表

来自 Adwords 广告系列的 GA 事件中的每次获取成本?

使用 API 的 Google Adwords 视频广告系列

使用 adwords api 管理广告的成本

google adwords api + 获取所有关键字

无法通过 Adwords API 获取广告的目标 URL