<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Config;
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201702\cm\CampaignService;
use Google\AdsApi\AdWords\v201702\cm\AdGroupService;
use Google\AdsApi\AdWords\v201702\cm\AdGroupAdService;
use Google\AdsApi\Common\OAuth2TokenBuilder;
class AdwordsSync extends Command {
protected $signature = 'Adwords:Sync';
protected $description = 'Synchronize adwords campaign data';
protected $session = null;
public function __construct()
{
parent::__construct();
}
const PAGE_LIMIT = 500;
public function handle() {
$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile()
->build();
// Construct an API session configured from a properties file and the OAuth2
// credentials above.
$this->session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();
$this->adWordsServices = new AdWordsServices();
$this->adGroupService = $this->adWordsServices->get($this->session, AdGroupService::class);
$offset = 0;
$query = 'SELECT Id, Name, Status, CampaignId ORDER BY Id';
$pageQuery = sprintf('%s LIMIT %d,%d', $query, $offset, self::PAGE_LIMIT);
// Make the query request.
$page = $this->adGroupService->query($pageQuery);
// Display results from the query.
if ($page->getEntries() !== null) {
foreach ($page->getEntries() as $adGroup) {
$id = $adGroup->getId();
printf("Found ad group ID #%s",$id);
}
} else {
echo "No entries found for ads groups. ".__FILE__. ":" . __LINE__ . "\n";
}
}
}