Google AdWords API PHP ReportDefinitionService 选择器

Posted

技术标签:

【中文标题】Google AdWords API PHP ReportDefinitionService 选择器【英文标题】:Google AdWords API PHP ReportDefinitionService Selector 【发布时间】:2016-03-30 09:55:29 【问题描述】:

我遇到了 ReportDefinitionService 的 Selector 类的问题。该类不存在。这是来自官方google示例的代码:

// Load the service, so that the required classes are available.
$user->LoadService('ReportDefinitionService', 'v201603');
// Optional: Set clientCustomerId to get reports of your child accounts
// $user->SetClientCustomerId('INSERT_CLIENT_CUSTOMER_ID_HERE');

// Create selector.
$selector = new Selector(); //The error happens here. Class 'Selector' isn't found
$selector->fields = array('CampaignId', 'AdGroupId', 'Id', 'Criteria','CriteriaType', 'Impressions', 'Clicks', 'Cost');

/vendor/googleads/googleads-php-lib/src/Google/Api/Ads/AdWords/v201603/ReportDefinitionService.php 文件中没有选择器定义,而在许多其他服务中定义了此类。

我正在尝试让它在 Laravel 5.1 上运行

如果我将目录 vendor/googleads/googleads-php-lib/src/Google/Api/Ads/AdWords/Util/v201603 添加到我的类图,错误就会消失:

"autoload": 
 "classmap": [
  ...
  "vendor/googleads/googleads-php-lib/src/Google/Api/Ads/AdWords/Util/v201603"
 ],
 ...

但我不确定我是否可以这样做。知道出了什么问题吗?

【问题讨论】:

【参考方案1】:

正如this section 中所述,您所做的是正确且符合预期的。 需要手动类映射,因为在src/Google/Api/Ads/AdWords/Util 下的每个版本目录中都声明了一些具有相同名称的类。

在DownloadCriteriaReport 示例中,我认为您已经在此处引入了其中的一些部分,ReportUtils.php 文件包含在第 29 行。 在 ReportUtils 中,当包含 ReportClasses 文件时声明类 Selector。

希望对您有所帮助。

塔内特, AdWords API 小组

【讨论】:

以上是关于Google AdWords API PHP ReportDefinitionService 选择器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 php 中的 Google Adwords API 中设置多个 ClientCustomerId?

Google Adwords API 报告实用程序 - PHP - XML 无效?

Adparams 如何在 Google Adwords PHP api 中工作

如何获取 Google Adwords api 的 developerToken?

未捕获的异常 InvalidArgumentException,消息配置文件未按指定找到:adsapi_php.ini - Google Adwords API

Google Adwords API 错误 - OAuth 客户端已删除