Google AdWords — API Googleads PHP, как настроить доступ?

Я чувствую себя полностью и совершенно потерянным в кругу ссылок на документацию, и при этом я не получаю ответы на свои вопросы.

То, чего я хочу добиться, — это просто набрать конечную точку API и получить ключевые данные для кампании (цена за клик, клики, показы, расходы и т. Д.). Это, вероятно, будет настроено на cron для запуска каждую неделю.

Глядя на страницу Github здесь https://github.com/googleads/googleads-php-lib он отправляет вас по этой ссылке для настройки доступа к API от имени ваших клиентов (веб-поток) https://github.com/googleads/googleads-php-lib/wiki/API-access-on-behalf-of-your-clients-(web-flow)

Я создал adid clientID и клиентский секрет в соответствии с инструкциями выше, но затем на следующих шагах предлагается перенаправить пользователей на страницу входа для подтверждения доступа?

Есть ли что-то подобное, так как он просто не будет работать на cron для извлечения некоторых данных раз в неделю, пользователь должен будет сделать это вручную.

0

Решение

Вы должны настроить OAuth2 для доступа к API, вы должны следовать эти инструкции .
Так что теперь у вас есть adsapi_php.ini настроен с вашими учетными данными, и это позволяет вам запрашивать API.
Тогда вы можете использовать php sdk выполнять запросы:

$dir = '/adsapi_php.ini' // the path of your .ini file;
require  '/vendor/autoload.php' // load the sdk;
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
... // load what you need

$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile($dir)
->build();

$session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->build();

$adWordsServices = new AdWordsServices();

Это выше только пример, я предлагаю посмотреть на GitHub сформируйте более подробные и рабочие примеры.

редактировать
Чтобы получить статистику по одной кампании, вы должны сделать Отчет о критериях эффективности.
Это пример кода, который я обычно использую: (обратите внимание, что это часть большого приложения, вероятно, не работает прямо из коробки). он генерирует отчет за последнюю неделю для кампании.

$dir = 'path/to/adsapi_php.ini';
require  'path/to/vendor/autoload.php';

use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201802\cm\AdGroupService;
use Google\AdsApi\AdWords\v201802\cm\AdGroupAdService;
use Google\AdsApi\AdWords\v201802\cm\OrderBy;
use Google\AdsApi\AdWords\v201802\cm\PolicyApprovalStatus;
use Google\AdsApi\AdWords\v201802\cm\SortOrder;
use Google\AdsApi\AdWords\v201802\cm\Paging;
use Google\AdsApi\AdWords\v201802\cm\ExpandedTextAd;
use Google\AdsApi\AdWords\v201802\cm\AdGroupAdOperation;
use Google\AdsApi\AdWords\v201802\cm\AdType;
use Google\AdsApi\AdWords\v201802\cm\AdGroupAdStatus;
use Google\AdsApi\AdWords\Reporting\v201802\DownloadFormat;
use Google\AdsApi\AdWords\Reporting\v201802\ReportDefinition;
use Google\AdsApi\AdWords\Reporting\v201802\ReportDefinitionDateRangeType;
use Google\AdsApi\AdWords\Reporting\v201802\ReportDownloader;
use Google\AdsApi\AdWords\ReportSettingsBuilder;
use Google\AdsApi\AdWords\v201802\cm\Predicate;
use Google\AdsApi\AdWords\v201802\cm\PredicateOperator;
use Google\AdsApi\AdWords\v201802\cm\ReportDefinitionReportType;
use Google\AdsApi\AdWords\v201802\cm\Selector;
use Google\AdsApi\AdWords\v201802\cm\DateRange;
use Google\AdsApi\Common\OAuth2TokenBuilder;

$oAuth2Credential = (new OAuth2TokenBuilder())
->fromFile($dir)
->build();

$adWordsServices = new AdWordsServices();

$session = (new AdWordsSessionBuilder())
->fromFile()
->withOAuth2Credential($oAuth2Credential)
->withClientCustomerId($accountId)
->build();

getaveragestats($oAuth2Credential, $session,$accountId,$campaignid,$campaingname);
function getaveragestats($oAuth2Credential, $session,$accountId,$campaignid,$campaingname){

$oneweekago = strtotime("-1 week");
$oneweekAgo = date("Ymd",$oneweekago);
$datefrom = $oneweekAgo;
$dateto =  date("Ymd");
$selector = new Selector();
$selector->setDateRange(new DateRange($datefrom, $dateto));
$selector->setFields(['Date','Impressions','AveragePosition','AverageCpc']);
$selector->setPredicates([
new Predicate('CampaignId', PredicateOperator::IN, [$campaignid])]);
$reportDefinition = new ReportDefinition();
$reportDefinition->setSelector($selector);
$reportDefinition->setReportName('Report per la campagna #' . $campaignid);
$reportDefinition->setDateRangeType(ReportDefinitionDateRangeType::CUSTOM_DATE);
$reportDefinition->setReportType(ReportDefinitionReportType::CAMPAIGN_PERFORMANCE_REPORT);
$reportDefinition->setDownloadFormat(DownloadFormat::CSV);

// Download report.
$reportDownloader = new ReportDownloader($session);
$reportSettingsOverride = (new ReportSettingsBuilder())
->includeZeroImpressions(false)
->build();
$reportDownloadResult = $reportDownloader->downloadReport($reportDefinition, $reportSettingsOverride);

$reportAsString = $reportDownloadResult->getAsString();
$your_array = array_filter(explode("\n",$reportAsString));
$titolo = $your_array[0];
$rowNames = $your_array[1];
$rowNames = explode(",", $rowNames);
$total = end($your_array);
$tot = explode(",", $total);
$result = [];
for ($x = 2; $x < (count($your_array)-1); $x++) {
$row =  explode(",", $your_array[$x]);
$tmp = array(
'data'=>$row[0],
'impressions'=>$row[1],
'position'=>$row[2],
'cpc'=> intval($row[3])/100000
);
$result[]=$tmp;
}
function sortFunction( $a, $b ) {
return strtotime($a["data"]) - strtotime($b["data"]);
}
$avrg = getAverage($result);
return $avrg
}
1

Другие решения

Других решений пока нет …