Migration to v201603 error

573 views
Skip to first unread message

Anti Lolo

unread,
Apr 25, 2016, 8:52:25 AM4/25/16
to AdWords API Forum
I got this error after set up my php adwords api  from v201506 to new v201603.

Fatal error: Class Selector not found in project ....

So uncommon error , did not find anything similar to find a solution.  

Please help.

Thanks
Anti 


Umesh Dengale

unread,
Apr 25, 2016, 2:06:22 PM4/25/16
to AdWords API Forum
Hi Anti,

Could you provide more details about the error message? Please check out that you downloaded v201603 PHP client library and your application is referencing all components of v201603 PHP client library.

Thanks,
Umesh, AdWords API Team.

Sabri Karagönen

unread,
Apr 28, 2016, 4:16:22 PM4/28/16
to AdWords API Forum
Hi,

I'm having same problem. 
It just occured after I updated AdWords API via Composer from v6.6 to last version. So I don't think there is a missing file, etc.

    $campaignService = $user->GetService('ReportDefinitionService', ADWORDS_VERSION);
    
    $selector = new Selector();
    $selector->fields = $reportFields;

Error is threw at second line that is bold. 

Thanks, 
Sabri


25 Nisan 2016 Pazartesi 15:52:25 UTC+3 tarihinde Anti Lolo yazdı:

Josh Radcliff (AdWords API Team)

unread,
Apr 29, 2016, 12:38:29 PM4/29/16
to AdWords API Forum
Hi Sabri, Anti,

Could you add a line to print ADWORDS_VERSION before the line that's failing? I want to confirm that it's set to "v201603".

Thanks,
Josh, AdWords API Team

Sabri Karagönen

unread,
Apr 29, 2016, 2:02:56 PM4/29/16
to AdWords API Forum
Hi Josh,

Of course, i tried it and I got 'v201603'. I also changed versions to 201601 and 201509, it didn't change anything.
Interestingly, I found that 
When I use Selector after ManagedCustomerService, it works:
$managedCustomerService = $user->GetService('ManagedCustomerService', 'v201603');
        
$selector = new Selector();

However, it doesn't work with ReportDefinitionService: (There is no problem with ADWORDS_VERSION, it prints v201603)

$campaignService = $user->GetService('ReportDefinitionService', ADWORDS_VERSION);
    
$selector = new Selector();




29 Nisan 2016 Cuma 19:38:29 UTC+3 tarihinde Josh Radcliff (AdWords API Team) yazdı:

Josh Radcliff (AdWords API Team)

unread,
Apr 29, 2016, 2:41:41 PM4/29/16
to AdWords API Forum
Hi,

Are you running a script you created or the DownloadCriteriaReport.php example from the library? If you're running your own script, could you try the example from the library and let me know if you see the same error?

Thanks,
Josh, AdWords API Team

Sabri Karagönen

unread,
Apr 29, 2016, 5:23:15 PM4/29/16
to AdWords API Forum
Tried it and example file worked successfully. 

Actually I'm using laravel and wrote AdWords report functions in a helper file. Then, call these helper functions from Controller files.

It was working before version update as I mentioned above. 

29 Nisan 2016 Cuma 21:41:41 UTC+3 tarihinde Josh Radcliff (AdWords API Team) yazdı:

Josh Radcliff (AdWords API Team)

unread,
Apr 29, 2016, 8:16:58 PM4/29/16
to AdWords API Forum
Hi,

Glad to hear that the example worked. Since that ran OK, the issue seems to be with your Laravel setup. My PHP expertise is limited, so bear with me :), but have you completed the following steps from the README (or their Laravel equivalents) in that environment?

To install the client library, either copy the lib/ folder into where you store your PHP source files that is on your PHP include path, or add the current directory path of the lib/ folder to your PHP include path.

Thanks,
Josh, AdWords API Team

Justin Pacholka

unread,
May 16, 2016, 9:09:06 AM5/16/16
to AdWords API Forum
@Sabri, were you able to solve this problem? Running into same thing with Laravel and the Selector() using ReportDefinitionService

- Justin

Justin Pacholka

unread,
May 16, 2016, 9:09:14 AM5/16/16
to AdWords API Forum
To follow up, to solve this Laravel problem, I'm guessing you installed from Composer. You need to add the following to composer.json (replacing the version # at the end with the version you're using), I missed that in the github instructions, all is working fine now in Laravel: 

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


Sonya Moffat

unread,
May 18, 2016, 9:12:06 AM5/18/16
to AdWords API Forum
Hi,

I am having the same problem and getting the "Class 'Selector' not found" error after migrating to v201603.  However, I am not using composer, so the above solution is not applicable. Here is some more information:
-All the code was functional before and everything else seems to be working fine, including selectors in other services.
-When I switch to version v201601 using the same library, the error persists. However, when I run v201601 using the previous release, there is no error.
-Running the DownloadCriteriaReport.php example results in the same error.
-Removing any extra versions from the library and running a single one has no effect. 

Does anyone have any suggestions? 

Thank you very much,
Sonya

Thanet Knack Praneenararat (AdWords API Team)

unread,
May 18, 2016, 5:15:59 PM5/18/16
to AdWords API Forum
Hello Sonya,

Please note that since version 7.0, the ReportUtils class and its companion classes are separated into ReportUtils and ReportClasses.
Make sure you also include the ReportClasses file as well when using ReportUtils.
Or else, ReportUtils can't find the Selector class.

See the release note for details.

Best,
Thanet, AdWords API Team

Sonya Moffat

unread,
May 19, 2016, 11:06:34 AM5/19/16
to AdWords API Forum
Hi Thanet.

Thank you very much for your response.  Unfortunately, I think the issue might be with something else.

When I load ReportClasses as well as ReportUtils, it still has the same error. Furthermore, in ReportUtils.php there is the line "require_once 'Google/Api/Ads/AdWords/Util/v201603/ReportClasses.php';", so Utils is including Classes automatically.
The example DownloadCriteriaReport.php example from the library also only includes the utilities and not the classes. It also contains this code:

"//Load the service, so that the required classes are available.
$user->LoadService('ReportDefinitionService', ADWORDS_VERSIONS);"

I also have this in my code, but my function and the example both throw the selector error. 
In contrast, when I load other Services, for instance ManagedCustomerService, the selector works fine. 

I've also checked in ReportClasses.php, and the selector class is there. However, the function that calls the class is not being hit.

Thank you in advance for your help or to anyone else who has had a similar issue and has ideas,
Sonya

Thanet Knack Praneenararat (AdWords API Team)

unread,
May 19, 2016, 12:17:32 PM5/19/16
to AdWords API Forum
Hello Sonya,

Could you please send your code snippet (if it's not too large) along with the error message to me by Reply to author privately?
I'll help investigate what happened.

Best,
Thanet, AdWords API Team

Oshua Moreno

unread,
Jun 19, 2016, 11:30:58 PM6/19/16
to AdWords API Forum
I had the same issue with the reports. In my case I had to require ReportUtils.php and to make a small change on ReportUtils.php to get the instance of AdsUtilityRegistry like below:

Added a new method on the class

public function getAdsUtilityRegistry(){
      if (!$this->adsUtilityRegistry instanceof AdsUtilityRegistry){
      $this->adsUtilityRegistry = AdsUtilityRegistry::getInstance();
      }
      return $this->adsUtilityRegistry;
  }

Change elsewhere references like


$this->adsUtilityRegistry->addUtility(....

to

self::getAdsUtilityRegistry()->addUtility(...

Thanet Knack Praneenararat (AdWords API Team)

unread,
Jun 20, 2016, 12:22:56 AM6/20/16
to AdWords API Forum
Hi Oshua,

What version of API and version of PHP lib you use (I guess the latter to be 10.0.0)?
What errors  did you get?
I'm not sure why you have to make such a modification.

Best,
Thanet, AdWords API Team

Miguel Angel Calleja

unread,
Jul 8, 2016, 1:19:38 PM7/8/16
to AdWords API Forum
I have the same problem... I had to require ReportUtils.php but I get an other error:


PHP Notice:  Undefined property: importar_adwords::$adsUtilityRegistry in /mnt/webapps/trunk/lib/googleapi/googleads-php-lib-10.0.0/src/Google/Api/Ads/AdWords/Util/v201605/ReportUtils.php on line 77

Any idea?

Php Version 5.5.26
Api version: 10.0.0

define('GOOGLE_API_PATH','/mnt/webapps/lib/googleapi/googleads-php-lib-10.0.0/src/');

define('LIB_PATH', GOOGLE_API_PATH.'Google/Api/Ads/AdWords/Lib');
define('UTIL_PATH', GOOGLE_API_PATH.'Google/Api/Ads/Common/Util');
define('ADWORDS_UTIL_PATH', GOOGLE_API_PATH.'Google/Api/Ads/AdWords/Util');
define('ADWORDS_UTIL_VERSION_PATH', GOOGLE_API_PATH.'Google/Api/Ads/AdWords/Util/v201605');

define('ADWORDS_VERSION', 'v201605');

ini_set('include_path', implode(array(
    ini_get('include_path'), PATH_SEPARATOR, GOOGLE_API_PATH
)));


require_once LIB_PATH.'/AdWordsUser.php';
require_once ADWORDS_UTIL_VERSION_PATH . '/ReportUtils.php';


....

$user->LoadService('ReportDefinitionService', ADWORDS_VERSION);

// Create selector.
$selector = new Selector();

Thanet Knack Praneenararat (AdWords API Team)

unread,
Jul 8, 2016, 2:37:11 PM7/8/16
to AdWords API Forum
Hi Miguel,

I'm not sure that with your settings, have you done require_once of AdsUtilityRegistry as done in our ReportUtils?
If you're still faced with the issue, could you please send your full source code?
(If it's private, please send by Reply to author privately)

Best,
Thanet, AdWords API Team

Miguel Angel Calleja

unread,
Jul 11, 2016, 7:14:34 AM7/11/16
to AdWords API Forum
I was instantiating ReportUtlis with an old version from v201509

I've fix it in v201605:

$reportUtils = new ReportUtils();
$reportUtils->DownloadReport($reportDefinition, $filePath, $user, $options);

And now it works! 

Thx

Thanet Knack Praneenararat (AdWords API Team)

unread,
Jul 11, 2016, 7:16:03 AM7/11/16
to AdWords API Forum
Hi Miguel,

Thanks for the update.
If you have any questions, feel free to ask us in this forum or raise the issue in the GitHub's issue section.

Best,
Thanet, AdWords API Team
Reply all
Reply to author
Forward
0 new messages