Skip to content

Instantly share code, notes, and snippets.

@Vijaysinh
Last active September 29, 2019 20:40
Show Gist options
  • Save Vijaysinh/2dd4eb81fde7a6dccb1e3feff5eade40 to your computer and use it in GitHub Desktop.
Save Vijaysinh/2dd4eb81fde7a6dccb1e3feff5eade40 to your computer and use it in GitHub Desktop.
Google Adwords Adding Audiance to Google adwords account Visitors of a page
<?php
//https://github.com/googleads/googleads-php-lib/blob/8cd18b116b40127c91bb1d2679924c13d6b964f6/examples/AdWords/v201809/Remarketing/AddRuleBasedUserLists.php
//https://developers.google.com/adwords/api/docs/guides/remarketing#visitors_to_your_website
//https://developers.google.com/adwords/api/docs/reference/v201809/AdwordsUserListService.BasicUserList
///https://groups.google.com/forum/#!msg/adwords-api/-_dA7ZYVNiI/ebA9BXjkCwAJ
//https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v2.common#google.ads.googleads.v2.common.UserListInfo
//https://developers.google.com/adwords/api/docs/samples/php/remarketing#add-crm-based-user-list
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201809\cm\Operator;
use Google\AdsApi\AdWords\v201809\rm\AdwordsUserListService;
use Google\AdsApi\AdWords\v201809\rm\CombinedRuleUserList;
use Google\AdsApi\AdWords\v201809\rm\CombinedRuleUserListRuleOperator;
use Google\AdsApi\AdWords\v201809\rm\DateKey;
use Google\AdsApi\AdWords\v201809\rm\DateRuleItem;
use Google\AdsApi\AdWords\v201809\rm\DateRuleItemDateOperator;
use Google\AdsApi\AdWords\v201809\rm\DateSpecificRuleUserList;
use Google\AdsApi\AdWords\v201809\rm\ExpressionRuleUserList;
use Google\AdsApi\AdWords\v201809\rm\NumberKey;
use Google\AdsApi\AdWords\v201809\rm\NumberRuleItem;
use Google\AdsApi\AdWords\v201809\rm\NumberRuleItemNumberOperator;
use Google\AdsApi\AdWords\v201809\rm\Rule;
use Google\AdsApi\AdWords\v201809\rm\RuleBasedUserListPrepopulationStatus;
use Google\AdsApi\AdWords\v201809\rm\RuleItem;
use Google\AdsApi\AdWords\v201809\rm\RuleItemGroup;
use Google\AdsApi\AdWords\v201809\rm\StringKey;
use Google\AdsApi\AdWords\v201809\rm\StringRuleItem;
use Google\AdsApi\AdWords\v201809\rm\StringRuleItemStringOperator;
use Google\AdsApi\AdWords\v201809\rm\UserListOperation;
use Google\AdsApi\AdWords\v201809\rm\UserListRuleTypeEnumsEnum;
use Google\AdsApi\Common\OAuth2TokenBuilder;
$client_id = Session::get('client_id');
$refresh_token = Session::get('refresh_token');
$oAuth2Credential = (new OAuth2TokenBuilder())
->withClientId(\Config::get('constants.options.CLIENT_ID'))
->withClientSecret(\Config::get('constants.options.CLIENT_SECRET'))
->withRefreshToken($refresh_token)
->build();
$SoapSettingsBuilder = (new SoapSettingsBuilder())->disableSslVerify()->build();
$session = (new AdWordsSessionBuilder())
->withDeveloperToken(\Config::get('constants.options.DEVELOPERTOKEN'))
->withOAuth2Credential($oAuth2Credential)
->withClientCustomerId($client_id)
->withSoapSettings($SoapSettingsBuilder)
->build();
$adWordsServices = new AdWordsServices();
$userListService = $adWordsServices->get($session, AdwordsUserListService::class);
$conversionTrackerService = $adWordsServices->get($session, ConversionTrackerService::class);
$expressionUserList = new ExpressionRuleUserList();
$expressionUserList->setName('Aud-2');
$site1StringRuleItem = new StringRuleItem();
$site1StringKey = new StringKey();
$site1StringKey->setName('url__');
$site1StringRuleItem->setKey($site1StringKey);
//https://developers.google.com/google-ads/api/reference/rpc/google.ads.googleads.v2.enums#google.ads.googleads.v2.enums.UserListStringRuleItemOperatorEnum.UserListStringRuleItemOperator
$site1StringRuleItem->setOp(StringRuleItemStringOperator::CONTAINS);
$site1StringRuleItem->setValue('example.com');
$site1RuleItem = new RuleItem();
$site1RuleItem->setStringRuleItem($site1StringRuleItem);
$site1ItemGroup = new RuleItemGroup();
$site1ItemGroup->setItems([$site1RuleItem]);
$userVisitedSite1Rule = new Rule();
$userVisitedSite1Rule->setGroups([$site1ItemGroup]);
$rule = new Rule();
$rule->setGroups([$site1ItemGroup]);
$rule->setRuleType(UserListRuleTypeEnumsEnum::DNF);
$expressionUserList->setRule($rule);
// $combinedUserList->setDescription('Users who visited two sites.');
// $operands = self::createCombinedUserListRules();
// $combinedUserList->setLeftOperand($operands[0]);
// $combinedUserList->setRightOperand($operands[1]);
// $combinedUserList->setRuleOperator(
// CombinedRuleUserListRuleOperator::AND_VALUE
// );
//print_r($expressionUserList);exit;
$operations = [];
$operation = new UserListOperation();
$operation->setOperand($expressionUserList);
$operation->setOperator(Operator::ADD);
$operations[] = $operation;
print_r($operations);
try{
$userList = $userListService->mutate($operations)->getValue();
} catch (ApiException $apiException) {
$error_message = '';
if (count($apiException->getErrors()) > 0) {
foreach ($apiException->getErrors() as $error) {
$error_message = $error->getReason();
}
}
echo $error_message;
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment