traffic estimate service dynamic keywords

40 views
Skip to first unread message

pc

unread,
Apr 26, 2016, 8:58:03 AM4/26/16
to AdWords API Forum, pbc...@gmail.com
Hi,

i am using the php estimatorkeywordtraffic.php and reading the keyword + matchtype from external source and i get this error.

 [RequiredError.REQUIRED @ selector.campaignEstimateRequests[0].adGroupEstimateRequests[0].keywordEstimateRequests.keyword[0].matchType, RequiredError.REQUIRED @ selector.campaignEstimateRequests[0].adGroupEstimateRequests[0].keywordEstimateRequests.keyword[0].text, RequiredError.REQUIRED @ selector.campaignEstimateRequests[0].adGroupEstimateRequests[0].keywordEstimateRequests.keyword[4].matchType]



  $keywords[] = new Keyword('$kword', '$mtype');


but if i use 


 $keywords[] = new Keyword('testing', 'EXACT'); -- this works 


am i missing something here.. any help is appreciated


thanks




Shwetha Vastrad (AdWords API Team)

unread,
Apr 26, 2016, 12:36:03 PM4/26/16
to AdWords API Forum, pbc...@gmail.com
Hello,

When you use single quotes, the variable doesn't get interpreted. I would suggest that you change to double quotes or remove quotes altogether.

You could change the line to this:

$keywords[] = new Keyword($kword, $mtype);

I hope this helps.

Regards,
Shwetha, AdWords API Team.

pc

unread,
Apr 27, 2016, 4:37:24 AM4/27/16
to AdWords API Forum, pbc...@gmail.com
Thanks for the response

tryed  with double quotes and no quotes but still getting the error.any help is very much appreciated



here is my code for reference, not sure where i am going wrong. 



<?php

require_once dirname(dirname(__FILE__)) . '/init.php';


 $keywords = array();


function EstimateKeywordTrafficExample(AdWordsUser $user) {

  $trafficEstimatorService =

      $user->GetService('TrafficEstimatorService', ADWORDS_VERSION);


  $kfile = fopen("keywords.txt","r");

  while (($line = fgets($kfile)) !== false)

  {

  //echo $line;

  $strng = strpos($line,'.');

  if ($strng == true){

   $arr = explode(".", $line, 2);

$kword = $arr[0];

$mtype = $arr[1];

//echo "$kword.$mtype \n";

break;

  }

  }


// fclose($kfile);

  $keywords[] = new keyword();

//   $keywords[] = new Keyword('dentist', 'BROAD');

//   $keywords[] = new Keyword("dentist hyderabad", "PHRASE");

//   $keywords[] = new Keyword('dentys', 'EXACT');


  $keywords[] = new Keyword($kword, $mtype);

  $keywordEstimateRequests = array();

  foreach ($keywords as $keyword) {

    $keywordEstimateRequest = new KeywordEstimateRequest();

    $keywordEstimateRequest->keyword = $keyword;

    $keywordEstimateRequests[] = $keywordEstimateRequest;

  }


  // Create ad group estimate requests.

  $adGroupEstimateRequest = new AdGroupEstimateRequest();

  $adGroupEstimateRequest->keywordEstimateRequests = $keywordEstimateRequests;

  $adGroupEstimateRequest->maxCpc = new Money(1000000);


  // Create campaign estimate requests.

  $campaignEstimateRequest = new CampaignEstimateRequest();

  $campaignEstimateRequest->adGroupEstimateRequests[] = $adGroupEstimateRequest;


  // Set targeting criteria. Only locations and languages are supported.

  $unitedStates = new Location();

  $unitedStates->id = 20453;

  $campaignEstimateRequest->criteria[] = $unitedStates;


  $english = new Language();

  $english->id = 1000;

  $campaignEstimateRequest->criteria[] = $english;


  // Create selector.

  $selector = new TrafficEstimatorSelector();

  $selector->campaignEstimateRequests[] = $campaignEstimateRequest;


  // Make the get request.

  $result = $trafficEstimatorService->get($selector);


  // Display results.

  $keywordEstimates =

      $result->campaignEstimates[0]->adGroupEstimates[0]->keywordEstimates;

  for ($i = 0; $i < sizeof($keywordEstimates); $i++) {

    $keywordEstimateRequest = $keywordEstimateRequests[$i];

    // Skip negative keywords, since they don't return estimates.

    if (!$keywordEstimateRequest->isNegative) {

      $keyword = $keywordEstimateRequest->keyword;

      $keywordEstimate = $keywordEstimates[$i];


      // Print the mean of the min and max values.

      printf("Results for the keyword with text '%s' and match type '%s':\n",

          $keyword->text, $keyword->matchType);


      if (isset($keywordEstimate->min->clicksPerDay) &&

          isset($keywordEstimate->max->clicksPerDay)) {

        $meanClicks = ($keywordEstimate->min->clicksPerDay

            + $keywordEstimate->max->clicksPerDay) / 2;

        printf("  Estimated daily clicks: %d\n", $meanClicks);

      }


    }

  }

}


// Don't run the example if the file is being included.

if (__FILE__ != realpath($_SERVER['PHP_SELF'])) {

  return;

}


try {

  // Get AdWordsUser from credentials in "../auth.ini"

  // relative to the AdWordsUser.php file's directory.

  $user = new AdWordsUser();


  // Log every SOAP XML request and response.

  $user->LogAll();


  // Run the example.

  EstimateKeywordTrafficExample($user);

} catch (Exception $e) {

  printf("An error has occurred: %s\n", $e->getMessage());

Shwetha Vastrad (AdWords API Team)

unread,
Apr 27, 2016, 10:07:54 AM4/27/16
to AdWords API Forum, pbc...@gmail.com
Hi,

The line below is causing the error: 

  $keywords[] = new keyword();

This is seeding empty values into the keywords array. 
Reply all
Reply to author
Forward
0 new messages