gerenciando e otimizando campanhas de ... - univale.com.br · 58 aumente a audiência do seu site...
TRANSCRIPT
a r t i g o
Eric Gomes
([email protected]): é formado em Ciências da Computação pela PUC-SP e atua na área de desenvolvimento de software há 13 anos. Atualmente trabalha com integração e arquitetura de sistemas através da consultoria SysMap Solutions. É responsável pela empresa Octavarium Tecnologia, especializada no gerenciamento e otimização de campanhas de links patrocinados do Google AdWords para clientes.
O programa de publicidade do Google
disponibiliza uma poderosa API
para o controle total de campanhas
publicitárias no Google AdWords.
Neste artigo, veremos como utilizar
a API do AdWords para desenvolver
um software que gerencia uma
campanha de publicidade fictícia no
Google AdWords baseada no fluxo
de vendas de produtos de uma loja
também fictícia.
58 www.mundoj.com.br58
Aumente a audiência do seu site com a poderosa API de publicidade do Google
Gerenciando e Otimizando Campanhas de
Links Patrocinados com a API do Google
AdWords
A Internet já revolucionou vários aspectos da vida das pes-soas. Isso também é verdade quando falamos da forma como as empresas divulgam seus produtos e serviços
através da publicidade.
Atualmente, as principais questões, como análise de mercado, estima-tivas de retorno sobre investimento, mensuração de resultados levam apenas minutos para serem respondidas. Já as campanhas nas chamadas mídias tradicionais, como rádio, televisão, jornal e revista, dificilmente atingem tamanha precisão e menos ainda velocidade comparável. Entre-tanto, a publicidade utilizando a Internet como mídia também passa por uma revolução.
Ainda existe uma grande parte de anúncios em páginas web mensurada através da relação custo por exibição, ou seja, o anunciante paga de acor-do com o número de vezes que o anúncio foi exibido. Geralmente existe um custo fixo a cada mil exibições. Por isso, esta métrica leva o nome de CPM: custo por mil. As campanhas que utilizam a métrica CPC funcionam de forma diferente. O cliente só paga quando alguém realmente vê e clica no seu anúncio. Por isso esta métrica leva o nome de CPC: custo por clique. Isto representa uma enorme diferença.
Com a publicidade CPC, o anunciante consegue mensurar de forma mais precisa se o investimento está ou não valendo à pena. O custo para o anunciante só acontece quando realmente conseguiu atrair um visitante para o domínio do seu website (blog ou qualquer outra página na In-ternet). Vale notar que mesmo para as campanhas baseadas em CPC, é possível calcular-se a CPM equivalente.
Este artigo apresenta a poderosa API disponibilizada pelo Google para otimizar campanhas de links patrocinados do Google AdWords.
Primeiramente veremos alguns benefícios da publicidade on-line em re-lação às mídias tradicionais e como mensurar os investimentos nesta mí-dia, através das métricas CPM e CPC. Em seguida, vamos ver a importante participação do Google neste mercado e apresentar o seu programa de publicidade na Internet: o Google AdWords.
Então chegamos ao assunto principal deste artigo que é apresentar a API do Google AdWords e mostrar como podemos utilizá-la para gerenciar e otimizar campanhas de links patrocinados do Google AdWords. O artigo é acompanhado de um software simples que exemplifica a utilização da API para a otimização de uma campanha de links patrocinados para uma loja.
5959
Google AdWords
O Google iniciou suas operações há 11 anos e, desde então, aperfeiçoa constantemente o seu principal sistema: o melhor sistema de buscas do mundo. A combinação perfeita entre hardware e software (denominada por alguns como Googleware), a capacidade de manipular um imenso volume de informações e apresentar indicações de websites ordenados por relevância em milésimos de segundos para milhões de pessoas ao mesmo tempo garante hoje ao Google 78% de participação no mercado global de buscas na Internet. Isso significa que, além da melhor search engine, o Google é o site mais acessado e utilizado na Internet em muitos países no mundo todo.
O Google sabe lucrar com essa imensa audiência: através do seu pro-grama de publicidade on-line denominado Google AdWords. O lucro obtido da sua engine de busca financia muitos outros serviços que a empresa mantém (ainda que gerando prejuízos em alguns casos, como o YouTube, por exemplo). Mas o Google vem mudando isso, introduzindo também a sua publicidade em todos os seus serviços, como Orkut, Gmail, YouTube, Earth, Maps e Blogger. As mesmas campanhas de publicidade preparadas para a busca do Google agora também permeiam estes ser-viços, o que traz benefícios não só ao próprio Google, mas também aos anunciantes. Além disso, o Google também disponibiliza outro programa relacionado aos links patrocinados denominado Google AdSense, no qual o Google paga aos donos de sites que aceitam veicular a publici-dade on-line do Google em suas páginas. Os anúncios exibidos sempre estão relacionados ao conteúdo e context da página.
O Google apresenta muitos links como resultado de cada busca feita (281 milhões em oito décimos de segundos para a busca por Java no Google Brasil, por exemplo) e garantir que determinado website esteja posicionado entre os 10 primeiros da lista, para que seja exibido logo na primeira página (ou próximo disso), é algo bastante difícil em alguns casos. Basicamente existem duas formas de posicionar seu website na cobiçada primeira página de resultados de busca: SEO e SEM.O SEO sig-nifica “Search Engine Optimization” (otimização para sistemas de busca) e consiste em técnicas para otimizar um website para atingir melhores posições nas buscas. Não é possível pagar ao Google para estar bem po-sicionado nos resultados de sua busca normal. Por outro lado, o SEM, que significa “Search Engine Marketing” (marketing para sistemas de busca), é um programa de publicidade e envolve investimentos em publicidade através da comercialização de anúncios. Este artigo trata do AdWords, que é o SEM aplicado ao Google.
O Google AdWords possibilita justamente isso: que você consiga que seu website seja exibido na primeira página (ou próximo disso), desde que você aceite pagar por isso. A disputa pelas melhores posições com o menor investimento é um dos objetivos no gerenciamento e otimização das campanhas de links patrocinados. O importante, acima de tudo, é atrair visitantes interessados nos produtos e serviços oferecidos pelo site, de forma a torná-los clientes além de visitantes.
O Google vende espaço publicitário na Internet através do seu programa de publicidade on-line denominado AdWords. Para sua utilização, o Google disponibiliza ao anunciante, um sistema com interface web para administração de todos os aspectos relacionados às campanhas publici-
tárias. Além da interface web (em http://adwords.google.com), o Google oferece o software Google AdWords Editor (figura 1) que pode ser bai-xado e instalado no computador e também a Google AdWords API que permite que sejam desenvolvidos softwares customizados integrados ao AdWords. É especificamente sobre esta API que trata este artigo.
As campanhas de publicidade do Google seguem uma estrutura hierár-quica simples, como segue:
Um gerente de conta administra várias contas de clientes, que por sua vez possuem diversas campanhas. Toda campanha possui anúncios e palavras-chave que são agrupados em grupos de anúncios.
Atualmente existem diversos formatos de anúncio, por exemplo, anún-cios para celular, gráficos e de vídeo, porém apenas os anúncios de texto são exibidos nas páginas de resultado de buscas do Google. Neste tuto-rial sobre a AdWords API, utilizamos apenas anúncios de texto.
O Google apresenta os anúncios pagos do AdWords em duas áreas das páginas de resultado de busca: na lateral direita da tela e em alguns casos acima dos resultados da busca gratuita na lateral esquerda (tam-bém conhecida como busca orgânica). De acordo com a palavra-chave utilizada na busca, o Google seleciona os anúncios dos anunciantes interessados por esta palavra-chave e posiciona os anúncios na pági-na. Para garantir um bom posicionamento, o anunciante deve levar em conta dois aspectos básicos: estar disposto a pagar um valor adequado em relação ao valor que os anunciantes concorrentes estão pagando e garantir que os anúncios sejam relevantes, isto é, que seus textos despertem o interesse ao clique do internauta que acabou de realizar a busca. A disputa pelas melhores posições é uma das metas dos anun-ciantes no jogo do AdWords.
Google AdWords API
Após adquirir um maior grau de experiência gerenciando e otimizando campanhas de links patrocinados do Google AdWords e entender real-mente a dinâmica de funcionamento do Google AdWords, o anunciante
6060 www.mundoj.com.br
Visão técnica
Google AdWords API
(ou a empresa responsável por este trabalho para o anunciante) nota-velmente percebe que existem diversas etapas e processos que podem ser automatizados. A Google AdWords API foi criada justamente para suprir esta necessidade. Através desta API, o anunciante pode elencar seus requisitos e regras de negócio e desenvolver softwares integrados ao sistema AdWords. Isto pode gerar grande vantagem competitiva em relação a anunciantes concorrentes que não dispõem deste recurso no auxílio ao gerenciamento de suas campanhas.
A Google AdWords API é composta por uma série de Web Services. A integração entre a API e o software desenvolvido normalmente acontece através da troca de arquivos XMLs sobre o protocolo HTTP. Basicamente o software faz uma “pergunta” ou “ordena uma ação” à API do AdWords. Esta requisição (request) então trafega pela Internet de forma segura até o servidor do Google, que por sua vez processa, executa a solicitação e responde com um novo arquivo XML de resposta (response).
As funcionalidades do AdWords, disponibilizadas aos anunciantes, estão agru-padas em diferentes Web Services, sendo que cada um disponibiliza operações relacionadas ao seu escopo específico e corresponde a uma estrutura do AdWords, permitindo acesso, alteração e criação dos dados que compõem a estrutura. A tabela 1 apresenta os Web Services, as estruturas com as quais se relacionam no AdWords, seus endpoints (onde podemos baixar os WSDLs) e as principais classes Java para manipulação.
WEB SERVICES ESTRUTURAS WSDL
CampaignSer-vice
Campanhas https://adwords.google.com/api/adwords/v13/CampaignService?wsdl
AdGroupService Grupos de anúncios
https://adwords.google.com/api/adwords/v13/AdGroupService?wsdl
AdService Anúncios https://adwords.google.com/api/adwords/v13/AdService?wsdl
CriterionService Palavras-chave ou canais
https://adwords.google.com/api/adwords/v13/CriterionService?wsdl
AccountService Contas de geren-tes e clientes
https://adwords.google.com/api/adwords/v13/AccountService?wsdl
InfoService API do AdWords http://adwords.google.com/api/adwords/v13/InfoService?wsdl
KeywordTool-Service
Ferramenta de palavras-chave
https://adwords.google.com/api/adwords/v13/KeywordToolService?wsdl
SiteSuggestion-Service
Sugestão de sites https://adwords.google.com/api/adwords/v13/SiteSuggestionService?wsdl
TrafficEstimator-Service
Estimativa de tráfego
https://adwords.google.com/api/adwords/v13/TrafficEstimatorService?wsdl
ReportService Relatórios https://adwords.google.com/api/adwords/v13/ReportService?wsdl
Cada operação de um Web Service contém parâmetros de entrada e saída específicos. Estas estruturas de dados são específicas para cada Web Service e é através da manipulação destes dados que o software é capaz de executar as regras de negócio necessárias.
Cabeçalho SOAP
O cabeçalho SOAP para a comunicação com o Web Services do AdWords é mostrado a seguir e contém as seguintes informações:
-ção para o Google;
-vedor para o Google;
Consumo com Java
Este tutorial utiliza a implementação Apache Axis do protocolo SOAP. Esta API facilita e padroniza a comunicação entre aplicações Java e Web Services. Através da classe WSDL2Java do Axis, foram geradas todas as classes e interfaces Java a partir dos Web Servi-ces do AdWords, disponibilizados pelo Google, necessárias para a integração. Para o Web Service CampaignService, por exemplo, foram geradas as classes Java Campaign, CampaignBudget, Cam-paignStatus, CampaignService e CampaignServiceLocator, entre outras. Os WSDLs estão disponíveis na Internet e suas urls estão na tabela 1 deste artigo. A Listagem 1 mostra uma requisição (ou request) e a respectiva resposta (ou response) da chamada para a operação getAllAdWordsCampaigns do Web Service Campaign-Service.
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
<v13:applicationToken>ZYXwvu-TSR123_456ABCDE</v13:applicationToken>
<v13:developerToken>ABcdeFGH93KL-NOPQ_STUv</v13:developerToken>
<v13:clientEmail></v13:clientEmail>
<v13:email>[email protected]</v13:email>
<v13:password>--------</v13:password>
<v13:useragent>opcional</v13:useragent>
</soapenv:Header>
<so
apen
v:En
velo
pe x
mln
s:so
apen
v="h
ttp:
//sch
emas
.xm
lsoa
p.or
g/so
ap/
enve
lope
/" x
mln
s:v1
3="h
ttps
://ad
wor
ds.g
oogl
e.co
m/a
pi/a
dwor
ds/v
13">
<
soap
env:
Hea
der>
<v1
3:ap
plic
atio
nTok
en>
</v
13:a
pplic
atio
nTok
en>
<v1
3:de
velo
perT
oken
>er
icgo
mes
@oc
tava
rium
.com
.br+
+B
RL
</v
13:d
evel
oper
Toke
n>
<
v13:
clie
ntEm
ail>
clie
nt_1
+ e
ricgo
mes
@oc
tava
rium
.com
.br
</v
13:c
lient
Emai
l>
<
v13:
emai
l> e
ricgo
mes
@oc
tava
rium
.com
.br
</v
13:e
mai
l>
<
v13:
pass
wor
d>--
----
</v
13:p
assw
ord>
<v1
3:us
erag
ent>
x</v
13:u
sera
gent
>
</s
oape
nv:H
eade
r>
<so
apen
v:B
ody>
<v1
3:ge
tAllA
dWor
dsC
ampa
igns
>
<
v13:
dum
my>
0</v
13:d
umm
y>
<
/v13
:get
AllA
dWor
dsC
ampa
igns
>
</s
oape
nv:B
ody>
</s
oape
nv:E
nvel
ope>
<so
apen
v:En
velo
pe x
mln
s:so
apen
v="h
ttp:
//sch
emas
.xm
lsoa
p.or
g/so
ap/e
nvel
ope/
" xm
lns:
xsd=
"htt
p://w
ww
.w3.
org/
2001
/XM
LSch
ema"
xm
lns:
xsi=
"htt
p://w
ww
.w3.
org/
2001
/XM
LSch
ema-
inst
ance
">
<so
apen
v:H
eade
r>
<
resp
onse
Tim
e so
apen
v:ac
tor=
"htt
p://s
chem
as.x
mls
oap.
org/
soap
/act
or/n
ext"
s
oape
nv:m
ustU
nder
stan
d="0
" xm
lns=
"ht
tps:
//adw
ords
.goo
gle.
com
/api
/adw
ords
/v13
">26
8</r
espo
nseT
ime>
<op
erat
ions
soa
penv
:act
or=
"htt
p://s
chem
as.x
mls
oap.
org/
soap
/act
or/n
ext"
soa
penv
:mus
tUnd
erst
and=
"0"
xmln
s=
"
http
s://a
dwor
ds.g
oogl
e.co
m/a
pi/a
dwor
ds/v
13">
2</o
pera
tions
>
List
agem
1. E
xem
plo
de r
eque
st e
res
pons
e da
ope
raçã
o ge
tAllA
dWor
dsC
ampa
igns
do
Web
Ser
vice
Cam
paig
nSer
vice
.
<
units
soa
penv
:act
or=
"htt
p://s
chem
as.x
mls
oap.
org/
soap
/act
or/n
ext"
soa
penv
:mus
tUnd
erst
and=
"0"
xmln
s=
"ht
tps:
//adw
ords
.goo
gle.
com
/api
/adw
ords
/v13
">2<
/uni
ts>
<re
ques
tId
soap
env:
acto
r="h
ttp:
//sch
emas
.xm
lsoa
p.or
g/so
ap/a
ctor
/nex
t"
soa
penv
:mus
tUnd
erst
and=
"0"
xmln
s=
"ht
tps:
//adw
ords
.goo
gle.
com
/api
/adw
ords
/v13
">
d1
b24a
1edb
8dc4
b068
d16a
1d9e
6d12
8e<
/req
uest
Id>
<
/soa
penv
:Hea
der>
<
soap
env:
Bod
y>
<ge
tAllA
dWor
dsC
ampa
igns
Res
pons
e xm
lns=
"ht
tps:
//ad
wor
ds.g
oogl
e.co
m/a
pi/a
dwor
ds/v
13">
<ge
tAllA
dWor
dsC
ampa
igns
Ret
urn>
<
budg
etA
mou
nt>
1000
0000
0</b
udge
tAm
ount
>
<
budg
etO
ptim
izer
Sett
ings
>
<en
able
d>fa
lse<
/ena
bled
>
<
/bud
getO
ptim
izer
Sett
ings
>
<
budg
etPe
riod>
Dai
ly<
/bud
getP
erio
d>
<
cont
entT
arge
ting>
AllP
lace
men
ts<
/con
tent
Targ
etin
g>
<
conv
ersi
onO
ptim
izer
Sett
ings
>
<en
able
d>fa
lse<
/ena
bled
>
<
/con
vers
ionO
ptim
izer
Sett
ings
>
<
endD
ay>
2009
-09-
07-0
4:00
</e
ndD
ay>
<
geoT
arge
ting>
<ta
rget
All>
true
</t
arge
tAll>
<co
untr
yTar
gets
xsi
:nil=
"tru
e"/>
<re
gion
Targ
ets
xsi:n
il="t
rue"
/>
<m
etro
Targ
ets
xsi:n
il="t
rue"
/>
<ci
tyTa
rget
s xs
i:nil=
"tru
e"/>
<pr
oxim
ityTa
rget
s xs
i:nil=
"tru
e"/>
<
/geo
Targ
etin
g>
6262 www.mundoj.com.br
A linguagem de programação Java foi escolhida para o código deste tutorial, porém, como a Google AdWords API baseia-se no protocolo SOAP, qualquer linguagem que ofereça suporte a esta tecnologia pode ser utilizada, como Python, DotNet, Ruby, PHP, ou até mesmo Perl, OCaml e ColdFusion.
Todo o comportamento das campanhas pode ser analisado através de relatórios customizados. De acordo com o foco, podem ser ge-rados relatórios de abordagem específica sobre campanhas, grupos de anúncios, palavras-chave e métricas detalhadas sobre taxa de cliques, número de impressões, médias de posicionamento, taxa de conversões, custos, entre outras. Através do Web Service ReportSer-vice, é possível agendar e gerar relatórios customizados através da API.
Custos e Sandbox
A API do Google AdWords tem um custo para o anunciante, pois o Google cobra por sua utilização. Cada funcionalidade está associada a uma quantida-de diferente de unidades de API. Cada 1.000 unidades de API custam U$0,25 (dólares norte-americanos), ou seja, cada unidade custa U$0,00025
As funcionalidades de leitura de estruturas básicas, como campanhas,
anúncios, palavras-chave, geralmente custam apenas 1 unidade (ou U$0,00025), porém as funcionalidades que envolvem alteração ou criação de dados, leitura de processamentos de relatórios, estimativas de palavras-chave, sugestão de sites podem chegar a 20 unidades por requisição. Todas as taxas de solicitações de cada operação da API do AdWords estão detalhadas no site da AdWords API.
Cada chamada está associada a uma funcionalidade e custa uma quantidade específica de unidades de API.
Para permitir que o anunciante só pague pela utilização da API quando o software estiver realmente pronto, o Google disponibiliza gratuitamente um ambiente de testes chamado sandbox. O anunciante não paga durante o desenvolvimento e testes do software no ambiente sandbox. Este ambiente simula o comportamento encontrado no ambiente de produção. Existem duas alterações a serem feitas para se utilizar o sandbox: cabeçalho soap e url dos webservices. 1. A url muda de https://adwords.google.com/api/adwords/v13/ para ht-
tps://sandbox.google.com/api/adwords/v13/ .2. O cabeçalho muda e deve ser preenchido desta forma:
moeda da campanha;
sendo que o e-mail da primeira conta é [email protected], e assim por diante até [email protected];
<soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" >
<v13:applicationToken></v13:applicationToken>
<v13:developerToken>[email protected]++BRL
</v13:developerToken>
<v13:clientEmail>[email protected]</v13:clientEmail>
<v13:email>[email protected]</v13:email>
<v13:password>xxxxxxx</v13:password>
<v13:useragent>opcional</v13:useragent>
</soapenv:Header>
<id>9560</id>
<languageTargeting xsi:nil="true"/>
<name>Campanha Teste 1</name>
<networkTargeting>
<networkTypes>SearchNetwork</networkTypes>
<networkTypes>ContentNetwork</networkTypes>
</networkTargeting>
<schedule> <status>Disabled</status> </schedule>
<startDay>2009-09-07-04:00</startDay>
<status>Deleted</status>
</getAllAdWordsCampaignsReturn>
<getAllAdWordsCampaignsReturn>
<budgetAmount>100000000</budgetAmount>
<budgetOptimizerSettings>
<enabled>false</enabled>
</budgetOptimizerSettings>
<budgetPeriod>Daily</budgetPeriod>
<contentTargeting>AllPlacements</contentTargeting>
<conversionOptimizerSettings>
<enabled>false</enabled>
</conversionOptimizerSettings>
<endDay>2037-12-30-05:00</endDay>
<geoTargeting>
<targetAll>true</targetAll>
<countryTargets xsi:nil="true"/>
<regionTargets xsi:nil="true"/>
<metroTargets xsi:nil="true"/>
<cityTargets xsi:nil="true"/>
<proximityTargets xsi:nil="true"/>
</geoTargeting>
<id>9570</id>
<languageTargeting xsi:nil="true"/>
<name>Campanha Loja Mundoj</name>
<networkTargeting>
<networkTypes>SearchNetwork</networkTypes>
<networkTypes>ContentNetwork</networkTypes>
</networkTargeting>
<schedule>
<status>Disabled</status>
</schedule>
<startDay>2009-09-07-04:00</startDay>
<status>Active</status>
</getAllAdWordsCampaignsReturn>
</getAllAdWordsCampaignsResponse>
</soapenv:Body>
</soapenv:Envelope>
6363
Implementação
Vamos ver agora um exemplo prático de utilização da API do Google AdWords. A aplicação Java que acompanha este artigo utiliza a API para gerenciar e otimizar uma campanha de links patrocinados do Google AdWords. Através do acompanhamento da oscilação da quantidade de produtos em estoque de uma loja fictícia, a aplicação determina quais palavras-chave devem ser utilizadas para ativar o anúncio da campanha on-line da loja no Google. Todos os produtos que estão em estoque precisam ser vendidos. Por isso os nomes dos produtos são utilizados como palavras-chave ativas. Por outro lado, os produtos que já foram vendidos não são utilizados como palavras-chave. A classe que inicia esta aplicação é AdWordsMundoj. Esta classe é responsável por iniciar a loja, colocá-la em funcionamento e anunciar seus produtos no Google AdWords, conforme Listagem 3.
Para rodar a aplicação Java que acompanha este artigo, você precisa de uma conta no Google. Abra e edite o arquivo adwords-mundoj.proper-ties na raiz do projeto e substitua as informações dos campos e-mail, password e clientEmail pelos dados da sua conta no Google (geralmente seu e-mail [email protected]), conforme Listagem 2.
O trecho a seguir exemplifica o funcionamento da aplicação apresentan-do o log de execução. Repare que para este artigo foi definido que o ciclo principal rodará duas vezes. O número exato deve ser ajustado, caso a caso, em um ambiente real.
A relação dos produtos comercializados pela loja fictícia está no arquivo XML thinkgeek-liquidacao.xml na raiz do projeto, conforme Listagem 4. Este XML é o RSS de produtos da seção de liquidação da ThinkGeek. A versão sempre atualizada dos produtos em liquidação da ThinkGeek.com está disponível no site da loja. A biblioteca Rome é utilizada para fazer o parse do arquivo xml, carregar os dados para a memória e po-pular a lista de produtos da loja, conforme Listagem 5. Esta biblioteca realmente cumpre o que promote: "…ending syndication feed confusion by supporting all of 'em" - acabando com a confusão de feeds e rss dando suporte a todos eles.
Em seguida, a aplicação apresenta a situação inicial da loja: as quantidades de produtos que estão em estoque e que foram ven-didos. A partir disso, a aplicação inicia a simulação principal do comportamento da loja, repetindo o mesmo procedimento duas vezes. O comportamento da loja é entrar em funcionamento, quan-
#google adwords apinamespace=https://adwords.google.com/api/adwords/v13
#google adwords authentication & [email protected][email protected][email protected]=Octavarium Tecnologia - Google AdWords - Revista MundojapplicationToken=
Listagem 2. Arquivo de configuração adwords-mundoj.properties.
Loja loja = new Loja("AdWords API Mundoj", PRODUCTS_FILE_PATH);
loja.report();
for (int i=0; i<2; i++) {
loja.funciona();
loja.report();loja.anuncia();
}
Listagem 3. Exemplo do ciclo de vida de uma loja.
<channel> <title>ThinkGeek :: Clearance Products</title> <link>http://www.thinkgeek.com/</link> <description>Stuff for Smart Masses - Clearance Items</description> <language>en-us</language> <pubDate>Thu, 27 Aug 2009 21:25:48 GMT</pubDate> <lastBuildDate>Sat, 29 Aug 2009 20:00:29 GMT</lastBuildDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <generator>ThinkGeek, Inc. - Sphorb 6.0.0r4854</generator> <managingEditor>[email protected]</managingEditor> <item> <title>26-Piece PC Repair Tool Kit</title> <link>http://www.thinkgeek.com/a4c2/?cpg=clrss</link> <guid>http://www.thinkgeek.com/a4c2/</guid> <description><img src="http://www.thinkgeek.com/images/products/thumb/large/26_piece_tool_kit.jpg" width="120" height="85" border="0" align="right"> 26-Piece PC Repair Tool Kit <p>Price: <b>$17.99</b></p></description> <category>Clearance</category> <pubDate>Thu, 27 Aug 2009 21:25:48 GMT</pubDate> </item> <item> <title>Roadside Assistance Safety Kit</title> <link>http://www.thinkgeek.com/bf5e/?cpg=clrss</link> <guid>http://www.thinkgeek.com/bf5e/</guid> <description><img src="http://www.thinkgeek.com/images/products/thumb/large/bf5e_roadside_assistance_safety_kit.jpg" width="95" height="130" border="0" align="right"> Roadside Assistance Safety Kit <p>Price: <b>$17.99</b></p></description> <category>Clearance</category> <pubDate>Thu, 27 Aug 2009 21:22:23 GMT</pubDate> </item></channel>
Listagem 4. Produtos comercializados pela loja.
List<SyndEntryImpl> feeds = fullFeed.getEntries();for (SyndEntryImpl feed : feeds) { ProdutoVO produto = new ProdutoVO(feed.getUri(), feed.getTitle(), feed.getDescription().getValue()); loja.setProduto(produto);}
Listagem 5. Leitura dos produtos.
LOJA AdWords API Mundoj48 produtos EM ESTOQUE52 produtos VENDIDOS Loja funcionando...Produtos são comprados e vendidos LOJA AdWords API Mundoj23 produtos EM ESTOQUE77 produtos VENDIDOS
6464 www.mundoj.com.br
Toda vez que a loja entra em funcionamento, acontece o sorteio que determina se um produto foi comprado ou vendido. Se um produto foi vendido, este produto sai do estoque e vai para a condição de vendido. Caso contrário, se um produto foi comprado, este produto sai da condição de vendido e entra para o estoque.
Quando a loja anuncia no AdWords, o comportamento é composto de três etapas. A primeira é a chamada ao método getClientsAc-counts da AccountInterface, o que garante que o Google criará caso ainda não tenha criado cinco contas de clientes fictícios para testes na sandbox. Para esta aplicação, utilizamos apenas um cliente. As etapas seguintes são responsáveis pela obtenção e criação, caso ainda não existam, do anúncio de texto, do grupo de anúncio e da campanha do cliente. Por fim, as palavras-chave são ativadas e de-sativadas (pause true/false) de acordo com os produtos em estoque, no momento. A Listagem 7 apresenta o trecho de código executado toda vez que a loja anuncia seus produtos no Google AdWords e a Listagem 8 mostra o código Java para obtenção dos grupos de anúncio da campanha do cliente.
do acontece a oscilação aleatória do estoque com produtos sendo vendidos e recomprados para reposição de estoque; seguido pela reapresentação da situação do estoque e então a atualização auto-mática da campanha de links patrocinados do Google AdWords, de acordo com o estoque.
A aplicação contém uma package criada através do Apache Axis, para a comunicação com os WebServices do AdWords, e mais quatro packages específicas. O package business contém o código respon-sável pela implementação das regras de negócio, como o compor-tamento aleatório da venda e compra de produtos da loja, e da criação de campanha, grupo de anúncio, anúncio e palavras-chave no AdWords. O package dao contém as classes que fazem a ligação entre as classes do package business e as classes do package da API do AdWords. O package vo contém as classes que representam Loja e Produto, conforme Listagem 6. E por último a package útil contém classes utilitárias para parse de XML, log da aplicação, leitor de properties e criação do cabeçalho (header) da comunicação SOAP exigido pela API do AdWords.
public class LojaVO {
private String nome;
private List<ProdutoVO> emEstoque;
private List<ProdutoVO> vendidos;
...
}
public class ProdutoVO {
private String guid;
private String titulo;
private String descricao;
...
}
public void anuncia() throws InvalidGoogleAdWordsAPIException {
//cria clientes no sandbox Google caso não existam
new Cliente().getClientes();
try {
this.clientEmail = Properties.getProperty("clientEmail");
} catch (IOException e) {
throw new InvalidGoogleAdWordsAPIException(e.getMessage(), e);
}
//recupera campanhas do cliente
Campanha campanha = new Campanha(clientEmail);
for (Campaign campaign : campanha.getCampaigns()) {
campanha.report(campaign);
//recupera grupos de anúncios da campanha
GrupoAnuncio grupoAnuncio = new GrupoAnuncio(campaign.getId(),
clientEmail);
for (AdGroup adGroup : grupoAnuncio.getAdGroups()) {
grupoAnuncio.report(adGroup);
//recupera anúncios do grupo de anúncio
AnuncioTexto anuncioTexto = new AnuncioTexto(adGroup.getId(),
clientEmail);
for (Ad ad : anuncioTexto.getAds()) {
anuncioTexto.report(ad);
}
//atualizar palavras-chave do grupo de anúncio
Logger.getLogger().info("
\nAtualizando palavras-chave do GOOGLE ADWORDS...");
PalavraChave palavraChave = new PalavraChave(adGroup.getId(),
clientEmail);
palavraChave.resetCriteria();
palavraChave.setKeywords(loja.getEmEstoque(), false);
palavraChave.setKeywords(loja.getVendidos(), true);
}
}
}
Listagem 6. Classes para Produto e Loja.
Listagem 7. Loja anunciando produtos no Google AdWords.
6565
O volume de informações sobre o AdWords disponibilizado na própria Internet é enorme. No final deste artigo, você encontra uma lista dos principais sites, caso você tenha interesse em se aprofundar no assunto.
O Google AdWords também movimenta o mundo dos negócios e gera empregos. Atualmente existem muitas empresas especializadas no gerenciamento e otimização de campanhas de links patrocinados do Google AdWords. Para garantir que o anunciante esteja sendo atendido por profissionais que realmente entendem do assunto, o Google criou o exame para certificação Google AdWords, que assegura a qualidade dos serviços prestados. O programa Google AdWords Professionals também oferece créditos promocionais, para serem utilizados em novas cam-panhas no AdWords, como bonificação para profissionais e empresas certificados.
Versões da AdWords API
Considerações finais
O Google AdWords está em constante evolução. Por isso, a API também evolui. A equipe técnica responsável pela API trabalha constantemente na evolução da API garantindo que todas as funcionalidades do AdWords estejam também disponíveis na API. A versão apresentada neste artigo é a v13 da API. A v13 é a versão estável em produção e traz a garantia de ótimo funcionamento.
Uma nova versão da API, batizada de v2009, está sendo desenvolvida pelo Google atualmente e promete novas funcionalidades, mais rapidez e um custo menor. A nova API v2009 não oferece compatibilidade com a v13, já que é uma reestruturação da API, expõe novos Web Services e traz um mecanismo diferente de utilização.
A versão v200906 ainda encontra-se em beta e por isso este artigo focou-se na versão v13. A tabela 2 apresenta uma visão macro entre as diferenças entre os Web Services das versões v13 e v2009. A lista de referências deste artigo o site para informações detalhadas sobre a nova versão v2009.
Versão v13 Versão v2009
CampaignService CampaignService
part of CriterionService CampaignCriterionService
part of CampaignService CampaignTargetService
AdGroupService AdGroupService
AdService AdGroupAdService
CriterionService AdGroupCriterionService
O objetivo deste artigo foi apresentar um exemplo simples de utiliza-ção da Google AdWords API. Como já dito, a API disponibiliza todas as funcionalidades que já existem na interface web do sistema; portanto qualquer atividade feita pela interface web pode ser migrada para um software customizado e integrado ao AdWords através da API. O intuito é garantir o funcionamento 24 horas por dia sem interrupções e sem erros, economizar tempo e aumentar a lucratividade dos investimentos em publicidade on-line; aliás, é isso o que todas as empresas buscam para crescerem e continuarem fortes em seus mercados, não é mesmo?
Referências
O livro e os sites citados a seguir fazem parte da rotina de acompanhamento permanente
sobre publicidade no Google e foram utilizados para a criação deste artigo.
html
-
docs/
private void initAdGroupService() throws InvalidGoogleAdWordsAPIException { try { adGroupService = new AdGroupServiceLocator().getAdGroupService(); RemoteService.getService(adGroupService, clientEmail); } catch (ServiceException e) { throw new InvalidGoogleAdWordsAPIException( InvalidGoogleAdWordsAPIException.SERVICE_EXCEPTION_MSG, e); } catch (IOException e) { throw new InvalidGoogleAdWordsAPIException(e.getMessage(), e); }}
public AdGroup[] getAdGroups() throws InvalidGoogleAdWordsAPIException { if (campaignId <= 0) return null; try { if (this.adGroupService==null) { this.initAdGroupService(); } adGroups = adGroupService.getActiveAdGroups(campaignId); } catch (ApiException e) { throw new InvalidGoogleAdWordsAPIException( InvalidGoogleAdWordsAPIException.API_EXCEPTION_MSG, e); } catch (RemoteException e) { throw new InvalidGoogleAdWordsAPIException( InvalidGoogleAdWordsAPIException.REMOTE_EXCEPTION_MSG, e); } if (adGroups == null) { Logger.getLogger().info("\nGrupos de Anúncios inexistentes"); } return adGroups;}
Listagem 8. Obtenção dos grupos de anúncios de uma campanha do AdWords