use Google\AdsApi\AdWords\AdWordsServices;use Google\AdsApi\AdWords\AdWordsSession;use Google\AdsApi\AdWords\AdWordsSessionBuilder;use Google\AdsApi\AdWords\v201702\cm\AdGroupExtensionSettingService;use Google\AdsApi\Common\OAuth2TokenBuilder;
class GetCampaignsWithAwql {
const PAGE_LIMIT = 100;
public static function runExample(AdWordsServices $adWordsServices, AdWordsSession $session) { $campaignService = $adWordsServices->get($session, AdGroupExtensionSettingService ::class);
$qury = $_GET["adgroup"]; // Create AWQL query. $query = "SELECT AdGroupId, ExtensionType , Extensions WHERE AdGroupId = '".$qury."' "; // Create paging controls. $totalNumEntries = 0; $adgroups = array(); $offset = 0; do { $pageQuery = sprintf('%s LIMIT %d,%d', $query, $offset, self::PAGE_LIMIT); $page = $campaignService->query($pageQuery);
// Display results from the query. if ($page->getEntries() !== null) { $totalNumEntries = $page->getTotalNumEntries(); foreach ($page->getEntries() as $extension) { $arr = array( "adgroup_id" => $extension->getAdGroupId() , "extensions" => $extension->getExtensionSetting()->getExtensions(), //"sitelinkUrl" => $extension->getSitelinkUrl() , "type" => $extension->getExtensionType() ); array_push($adgroups,$arr ); } }
// Advance the paging offset. $offset += self::PAGE_LIMIT; } while ($offset < $totalNumEntries);
$array_data = json_encode($adgroups,true); exit($array_data); }
public static function main() { // Generate a refreshable OAuth2 credential for authentication. $oAuth2Credential = (new OAuth2TokenBuilder()) ->fromFile() ->build();
// Construct an API session configured from a properties file and the OAuth2 // credentials above. $session = (new AdWordsSessionBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->build(); self::runExample(new AdWordsServices(), $session); }}
GetCampaignsWithAwql::main();[{"adgroup_id":1900848642,"extensions":[{"ExtensionFeedItem.Type":"SitelinkFeedItem"},{"ExtensionFeedItem.Type":"SitelinkFeedItem"},{"ExtensionFeedItem.Type":"SitelinkFeedItem"},{"ExtensionFeedItem.Type":"SitelinkFeedItem"}],"type":"SITELINK"},{"adgroup_id":1900848642,"extensions":[{"ExtensionFeedItem.Type":"CallFeedItem"}],"type":"CALL"}]
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<soapenv:Header>
<ns1:RequestHeader xmlns:ns1="https://adwords.google.com/api/adwords/cm/v201705" soapenv:mustUnderstand="0">
<ns1:clientCustomerId>YOUR_CUSTOMER_ID</ns1:clientCustomerId>
<ns1:developerToken>YOUR_DEVELOPER_TOKEN</ns1:developerToken>
<ns1:userAgent>YOUR_USER_AGENT</ns1:userAgent>
<ns1:validateOnly>false</ns1:validateOnly>
<ns1:partialFailure>false</ns1:partialFailure>
</ns1:RequestHeader>
</soapenv:Header>
<soapenv:Body>
<get xmlns="https://adwords.google.com/api/adwords/cm/v201705">
<selector>
<fields>AdGroupId</fields>
<fields>Extensions</fields>
<fields>ExtensionType</fields>
<predicates>
<field>AdGroupId</field>
<operator>EQUALS</operator>
<values>THE_ADGROUP_ID</values>
</predicates>
<ordering>
<field>AdGroupId</field>
<sortOrder>ASCENDING</sortOrder>
</ordering>
<paging>
<startIndex>0</startIndex>
<numberResults>100</numberResults>
</paging>
</selector>
</get>
</soapenv:Body>
</soapenv:Envelope>
[main] INFO com.google.api.ads.adwords.lib.client.AdWordsServiceClient.soapXmlLogger - SOAP Response:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Header>
<ResponseHeader xmlns="https://adwords.google.com/api/adwords/cm/v201705">
<requestId>THE_REQUEST_ID</requestId>
<serviceName>AdGroupExtensionSettingService</serviceName>
<methodName>get</methodName>
<operations>0</operations>
<responseTime>300</responseTime>
</ResponseHeader>
</soap:Header>
<soap:Body>
<getResponse xmlns="https://adwords.google.com/api/adwords/cm/v201705">
<rval>
<totalNumEntries>1</totalNumEntries>
<Page.Type>AdGroupExtensionSettingPage</Page.Type>
<entries>
<adGroupId>THE_ADGROUP_ID</adGroupId>
<extensionType>SITELINK</extensionType>
<extensionSetting>
<extensions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="SitelinkFeedItem">
<feedId>THE_FEED_ID</feedId>
<feedItemId>THE_FEEDITEM_ID</feedItemId>
<status>ENABLED</status>
<feedType>SITELINK</feedType>
<policyData>
<PolicyData.Type>FeedItemPolicyData</PolicyData.Type>
<placeholderType>1</placeholderType>
<feedMappingId>THE_FEEDMAPPING_ID</feedMappingId>
<validationStatus>UNCHECKED</validationStatus>
<qualityApprovalStatus>UNKNOWN</qualityApprovalStatus>
</policyData>
<ExtensionFeedItem.Type>SitelinkFeedItem</ExtensionFeedItem.Type>
<sitelinkText>Store Hours</sitelinkText>
<sitelinkFinalUrls>
<urls>http://www.example.com/storehours</urls>
</sitelinkFinalUrls>
</extensions>
</extensionSetting>
</entries>
</rval>
</getResponse>
</soap:Body>
</soap:Envelope>
<?php
namespace Google\AdsApi\Examples\AdWords\v201702\BasicOperations;
require $_SERVER['DOCUMENT_ROOT'].'/adwords/vendor/autoload.php';
use Google\AdsApi\AdWords\AdWordsServices;use Google\AdsApi\AdWords\AdWordsSession;use Google\AdsApi\AdWords\AdWordsSessionBuilder;use Google\AdsApi\AdWords\v201702\cm\AdGroupExtensionSettingService;use Google\AdsApi\AdWords\v201702\cm\ExtensionSetting;use Google\AdsApi\AdWords\v201702\cm\ExtensionFeedItem;use Google\AdsApi\AdWords\v201702\cm\SitelinkFeedItem;use Google\AdsApi\AdWords\v201702\cm\CallFeedItem;use Google\AdsApi\AdWords\v201702\cm\CalloutFeedItem;use Google\AdsApi\AdWords\v201702\cm\UrlList;use Google\AdsApi\AdWords\v201702\cm\CriterionType;use Google\AdsApi\AdWords\v201702\cm\OrderBy;use Google\AdsApi\AdWords\v201702\cm\Paging;use Google\AdsApi\AdWords\v201702\cm\Predicate;use Google\AdsApi\AdWords\v201702\cm\PredicateOperator;use Google\AdsApi\AdWords\v201702\cm\Selector;use Google\AdsApi\AdWords\v201702\cm\SortOrder;use Google\AdsApi\Common\OAuth2TokenBuilder;
class GetCampaignsWithAwql {
const PAGE_LIMIT = 100;
public static function runExample(AdWordsServices $adWordsServices,AdWordsSession $session) { $AdGroupExtensionSettingService = $adWordsServices->get($session, AdGroupExtensionSettingService ::class);
$adGroupId = floatval($_GET["adgroup"]); $selector = new Selector(); $selector->setFields( ['AdGroupId', 'ExtensionType', 'Extensions' ]); $selector->setOrdering([new OrderBy('AdGroupId', SortOrder::ASCENDING)]); $selector->setPredicates([ new Predicate('AdGroupId', PredicateOperator::IN, [$adGroupId]), //new Predicate('ExtensionType', PredicateOperator::IN,[ExtensionType::SITELINK]) ]); $selector->setPaging(new Paging(0, self::PAGE_LIMIT)); $page = $AdGroupExtensionSettingService->get($selector); $extenions_arr = array(); $extenions_type = array(); // Display results from the query. if ($page->getEntries() !== null) { $totalNumEntries = $page->getTotalNumEntries(); foreach ( $page->getEntries() as $extension) { $extensions = $extension->getExtensionSetting()->getExtensions(); //foreach extention item foreach ( $extensions as $ex ) { switch ( $extension->getExtensionType() ) { case "SITELINK" : $urllist = $ex->getSitelinkFinalUrls(); //return print_r( $urllist->getUrls()); $ext_arr = array( "sitelinkText" => $ex->getSitelinkText() , "sitelinkUrl" => $ex->getSitelinkFinalUrls()->getUrls()[0] , "type" => $extension->getExtensionType() ); break; case "CALL" : $ext_arr = array( "phone" => $ex->getCallPhoneNumber() , "type" => $extension->getExtensionType() ); break; case "CALLOUT" : $ext_arr = array( "text" => $ex->getCalloutText() ); break; } array_push( $extenions_type , $ext_arr ); }
} $array_data = json_encode($extenions_type,true); exit($array_data); }
}
public static function main() { // Generate a refreshable OAuth2 credential for authentication. $oAuth2Credential = (new OAuth2TokenBuilder()) ->fromFile() ->build();
// Construct an API session configured from a properties file and the OAuth2 // credentials above. $session = (new AdWordsSessionBuilder()) ->fromFile() ->withOAuth2Credential($oAuth2Credential) ->build(); self::runExample(new AdWordsServices(), $session); }}
GetCampaignsWithAwql::main();
?>