Last active
September 29, 2019 20:40
-
-
Save Vijaysinh/2dd4eb81fde7a6dccb1e3feff5eade40 to your computer and use it in GitHub Desktop.
Google Adwords Adding Audiance to Google adwords account Visitors of a page
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<?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