Hi Rohan, Thanks for your help. Initially when I tried this I was still only getting one result back, so I figured it must be a problem with my installation and reinstalled SOAP::Lite using cpan. This solved the problem!
Many thanks, Dan On Mon, Feb 16, 2009 at 9:18 AM, Rohan Almeida <ro...@almeida.in> wrote: > > > 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<client_1%2bdan.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 -~----------~----~----~----~------~----~------~--~---