I'm trying to get a list of all campaigns using the Google Ads API. To do this, I use an example from the google-ads-php library, but this code does not work for me. What's weird is that the foreach loop doesn't even run and I don't see the output of var_dump. Can anyone suggest me what I'm doing wrong? Or give a link to an example with working code?
My PHP Symfony class code:
class CheckController extends AbstractController{ /** * @Route("/check", name="check") */ public function index(): Response{ $config = $this->getParameter('kernel.project_dir') . '/google_ads_php.ini'; if (!is_file($config)) return $this->json([$config]); $oAuth2Credential = (new OAuth2TokenBuilder()) ->fromFile($config) ->build(); $googleAdsClient = (new GoogleAdsClientBuilder()) ->fromFile($config) ->withOAuth2Credential($oAuth2Credential) ->build(); try { self::runExample( $googleAdsClient, 'xxxxxxxxxx' ); } catch (GoogleAdsException $googleAdsException) { printf( "Request with ID '%s' has failed.%sGoogle Ads failure details:%s", $googleAdsException->getRequestId(), PHP_EOL, PHP_EOL ); foreach ($googleAdsException->getGoogleAdsFailure()->getErrors() as $error) { /** @var GoogleAdsError $error */ printf( "\t%s: %s%s", $error->getErrorCode()->getErrorCode(), $error->getMessage(), PHP_EOL ); } exit(1); } catch (ApiException $apiException) { printf( "ApiException was thrown with message '%s'.%s", $apiException->getMessage(), PHP_EOL ); exit(1); } $test = self::runExample($googleAdsClient, '1138211281'); foreach ($test->iterateAllElements() as $googleAdsRow) { echo '<pre>'; var_dump($googleAdsRow->getCampaign()->getId()); echo '</pre>'; } /*echo '<pre>'; var_dump($test); echo '</pre>';*/ foreach ($test->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ var_dump($googleAdsRow->getCampaign()->getId()); } /*return $this->render('base.html.twig', [ 'test' => $test ]);*/ return $this->json([ 'message' => 'Welcome to your new controller!', 'path' => 'src/Controller/CheckController.php', ]); } /** * @param GoogleAdsClient $googleAdsClient * @param int $customerId * @return void * @throws ApiException */ public static function runExample(GoogleAdsClient $googleAdsClient, int $customerId){ $googleAdsServiceClient = $googleAdsClient->getGoogleAdsServiceClient(); // Creates a query that retrieves all campaigns. $query = 'SELECT campaign.id, campaign.name FROM campaign ORDER BY campaign.id'; // Issues a search stream request. /** @var GoogleAdsServerStreamDecorator $stream */ $stream = $googleAdsServiceClient->searchStream($customerId, $query); // Iterates over all rows in all messages and prints the requested field values for // the campaign in each row. foreach ($stream->iterateAllElements() as $googleAdsRow) { /** @var GoogleAdsRow $googleAdsRow */ printf( "Campaign with ID %d and name '%s' was found.%s", $googleAdsRow->getCampaign()->getId(), $googleAdsRow->getCampaign()->getName(), PHP_EOL ); } return $stream; } }