Hi,

It looks to me like you're using an incorrect XPath expression to 
get to your results. "//body" i.e. I guess using "//moreSpecific" 
  should help.

I've also had a try at this using Google::Adwords, but on the 
sandbox.

my $seed_keyword1 = Google::Adwords::SeedKeyword->new;
$seed_keyword1->negative(0);
$seed_keyword1->text('trusted places');
$seed_keyword1->type('Broad');

my $keyword_variations = $service->getKeywordVariations(
   {
     seedKeywords => [ $seed_keyword1, ],
     useSynonyms  => 1,
     languages    => [ 'en', ],
     countries    => [ 'US', ],
   }
);

for ( @{ $keyword_variations->moreSpecific } ) {
   print "Text: " . $_->text . "\n";
   print "advertiserCompetitionScale: "
     .  $_->advertiserCompetitionScale . "\n";
}


Hope this helps.

-- 
Rohan


discodan wrote:
> Hi all,
> 
> Would really appreciate your help. This is probably more of a Perl /
> SOAP than adwords API question, but I've spent hours trawling the
> internet for an answer to this and cannot find it, so I'm hoping you
> can help :). I'm relatively new to Perl and SOAP, and I'm trying to
> implement a connection to the Google Adwords API using SOAP::Lite. I
> have it almost working but however I try and get a return value from
> SOAP::SOM (e.g. using valueof or result) I only seem to get the last
> element. Even calling valueof("//Body") just gives me one element. I
> have tried debugging the code and using Dumper, but the SOAP::Lite
> code is quite unreadable (at least to me :)
> and I can't work out whats going on. I've tried implementing this
> directly both using SOAP::Lite and via Google::Adwords, and they both
> have the same behaviour.
> 
> This what I get from valueof("//Body):
> 
> $VAR1 = {
> 'getKeywordVariationsResponse' => {
> 
> 'getKeywordVariationsReturn' => {
> 
> 'moreSpecific' => {
> 
> 'searchVolumeScale' => '2',
> 
> 'language' => '',
> 
> 'text' => 'trusted places 1',
> 
> 'advertiserCompetitionScale' => '3'
> 
> }
> 
> }
> }
> };
> 
> But I know there is more than one KeywordVariation from using Dumper
> on the SOAP::SOM object.
> 
> This is the code I am using, its basically the example provided by
> Google:
> 
> use strict;
> use warnings;
> use English '-no_match_vars';
> use SOAP::Lite;
> use Data::Dumper;
> binmode(STDOUT, ':utf8');
> 
> # Provide AdWords login information.
> my $email = '';
> my $password = '';
> my $client_email = 'client_1+dan.j.rog...@gmail.com';
> my $useragent = 'QYPE: AdWords API Perl Sample Code';
> my $developer_token = 'dan.j.rog...@gmail.com++usd';
> my $application_token = 'INSERT_APPLICATION_TOKEN_HERE';
> 
> # Set up service connection with autotyping disabled and fault handler
> # registered. To send requests to production environment, replace
> "sandbox" with
> # "adwords". To view XML request/response, uncomment
> # "SOAP::Lite->import(+trace => 'debug');".
> my $url =
> sprintf('https://%s.google.com/api/adwords/v12/KeywordToolService',
> 'sandbox');
> 
> my $wsdl = $url . '?wsdl';
> 
> my $service =
> SOAP::Lite->service($wsdl)->autotype(0)->readable(1)->proxy($url);
> 
> $service->on_fault(sub {
> my $response = $ARG[1];
> die('The following SOAP fault occurred:', "\n",
> ' faultcode: ', $response->faultcode(), "\n",
> ' faultstring: ', $response->faultstring(),
> "\n")
> });
> SOAP::Lite->import(+trace => 'debug');
> 
> # Define SOAP headers.
> my @headers = (
> SOAP::Header->name('email' => $email),
> SOAP::Header->name('password' => $password),
> SOAP::Header->name('clientEmail' => $client_email),
> SOAP::Header->name('useragent' => $useragent),
> SOAP::Header->name('developerToken' => $developer_token),
> SOAP::Header->name('applicationToken' => $application_token)
> );
> 
> # Create seed keyword structure.
> my $seed_keyword = {
> 'negative' => 'false',
> 'text' => 'trusted places',
> 'type' => 'Broad',
> };
> 
> my $seed_keywords = SOAP::Data->name('seed_keywords' =>
> [$seed_keyword]);
> my $use_synonyms = SOAP::Data->name('useSynonyms' => 'true');
> my $languages = SOAP::Data->name('languages' => ['en']);
> my $countries = SOAP::Data->name('countries' => ['US']);
> 
> # Get keyword variations.
> my $variation_lists = $service->call('getKeywordVariations' =>
> $seed_keywords,
> $use_synonyms, $languages, $countries, @headers);
> 
> print Dumper($variation_lists);
> 
> my @data = $variation_lists->valueof("//Body");
> 
> foreach my $data_word (@data){
> print Dumper($data_word);
> }
> 
> If anyone knows where I am going wrong I'd be most grateful!
> 
> Thanks for your help.
> > 
> 


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"AdWords API Forum" group.
To post to this group, send email to adwords-api@googlegroups.com
To unsubscribe from this group, send email to 
adwords-api+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/adwords-api?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to