namespace Google\AdsApi\Examples\AdWords\v201702\Optimization;
require 'vendor/autoload.php';
$path = $_SERVER['DOCUMENT_ROOT'];
define('WP_USE_THEMES', true);
include_once $path . '/wp-load.php';
use Band;
function getFullBandenMerk($merk)
{
return Band::fullMerk($merk);
}
use Google\AdsApi\AdWords\AdWordsServices;
use Google\AdsApi\AdWords\AdWordsSession;
use Google\AdsApi\AdWords\AdWordsSessionBuilder;
use Google\AdsApi\AdWords\v201702\cm\Keyword;
use Google\AdsApi\AdWords\v201702\cm\Language;
use Google\AdsApi\AdWords\v201702\cm\Location;
use Google\AdsApi\AdWords\v201702\cm\NetworkSetting;
use Google\AdsApi\AdWords\v201702\cm\Paging;
use Google\AdsApi\AdWords\v201702\o\AttributeType;
use Google\AdsApi\AdWords\v201702\o\IdeaType;
use Google\AdsApi\AdWords\v201702\o\LanguageSearchParameter;
use Google\AdsApi\AdWords\v201702\o\LocationSearchParameter;
use Google\AdsApi\AdWords\v201702\o\NetworkSearchParameter;
use Google\AdsApi\AdWords\v201702\o\RelatedToQuerySearchParameter;
use Google\AdsApi\AdWords\v201702\o\RequestType;
use Google\AdsApi\AdWords\v201702\o\TargetingIdeaSelector;
use Google\AdsApi\AdWords\v201702\o\TargetingIdeaService;
use Google\AdsApi\Common\OAuth2TokenBuilder;
use Google\AdsApi\Common\Util\MapEntries;
/**
* This example gets keyword ideas related to a seed keyword.
*/
class GetKeywordIdeas {
const PAGE_LIMIT = 1000;
const perPage = 699;
public static function runExample(AdWordsServices $adWordsServices,
AdWordsSession $session, $page) {
$targetingIdeaService =
$adWordsServices->get($session, TargetingIdeaService::class);
// Create selector.
$selector = new TargetingIdeaSelector();
$selector->setRequestType(RequestType::STATS);
$selector->setIdeaType(IdeaType::KEYWORD);
$selector->setRequestedAttributeTypes([
AttributeType::KEYWORD_TEXT,
AttributeType::TARGETED_MONTHLY_SEARCHES,
]);
$searchParameters = [];
global $wpdb;
$search = $wpdb->get_results("SELECT DISTINCT merk, beschrijving FROM bc_banden WHERE merk != '' AND beschrijving != '' LIMIT ".self::perPage." OFFSET ".($page*self::perPage));
$keywords = array();
foreach($search as $item)
{
$keyword = trim(str_replace('*', '', str_replace('?', ' ', str_replace('/', ' ', preg_replace("/\([^)]+\)/","", getFullBandenMerk($item->merk).' '.$item->beschrijving)))));
$keywords[] = $keyword;
# echo $keyword.','.PHP_EOL;
}
$keywords = array_unique($keywords);
// Create related to query search parameter.
$relatedToQuerySearchParameter = new RelatedToQuerySearchParameter();
$relatedToQuerySearchParameter->setQueries($keywords);
$searchParameters[] = $relatedToQuerySearchParameter;
$locationData = new LocationSearchParameter();
$nederland = new Location();
$nederland->setId(2558);
$locationData->setLocations([$nederland]);
$searchParameters[] = $locationData;
// Create network search parameter (optional).
$networkSetting = new NetworkSetting();
$networkSetting->setTargetGoogleSearch(true);
$networkSetting->setTargetSearchNetwork(false);
$networkSetting->setTargetContentNetwork(false);
$networkSetting->setTargetPartnerSearchNetwork(false);
$networkSearchParameter = new NetworkSearchParameter();
$networkSearchParameter->setNetworkSetting($networkSetting);
$searchParameters[] = $networkSearchParameter;
$selector->setSearchParameters($searchParameters);
$selector->setPaging(new Paging(0, self::PAGE_LIMIT));
$totalNumEntries = 0;
do {
// Retrieve targeting ideas one page at a time, continuing to request
// pages until all of them have been retrieved.
$page = $targetingIdeaService->get($selector);
// Print out some information for each targeting idea.
if ($page->getEntries() !== null) {
$totalNumEntries = $page->getTotalNumEntries();
foreach ($page->getEntries() as $targetingIdea) {
$data = MapEntries::toAssociativeArray($targetingIdea->getData());
$keyword = $data[AttributeType::KEYWORD_TEXT]->getValue();
$searchVolume =
($data[AttributeType::TARGETED_MONTHLY_SEARCHES]->getValue() !== null)
? $data[AttributeType::TARGETED_MONTHLY_SEARCHES]->getValue() : 0;
foreach($searchVolume as $volume)
{
# echo $keyword.' '.$volume->getYear().' '.$volume->getMonth().' '.$volume->getCount().PHP_EOL;
$searchvol = $volume->getCount();
$wpdb->query($wpdb->prepare("INSERT INTO bc_banden_searchvolume (searchterm, searchvolume) VALUES (%s, %d) ON DUPLICATE KEY UPDATE searchvolume = %d;", $keyword, $searchvol, $searchvol));
break;
}
}
}
$selector->getPaging()->setStartIndex(
$selector->getPaging()->getStartIndex() + self::PAGE_LIMIT);
} while ($selector->getPaging()->getStartIndex() < $totalNumEntries);
}
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();
global $wpdb;
$search = $wpdb->get_results("SELECT DISTINCT merk, beschrijving FROM bc_banden WHERE merk != '' AND beschrijving != ''");
$results = count($search);
unset($search);
$pages = ceil($results/self::perPage);
for($i = 0; $i < $pages; $i++)
{
self::runExample(new AdWordsServices(), $session, $i);
}
}
}
GetKeywordIdeas::main();