Abr 302013
 

Algunos informes disponibles en el frontend web de Google AdWords no pueden ser descargados utilizando el API de AdWords. En concreto, el informe que contiene el resumen de facturación de los clientes de una cuenta MCM, incluyendo el presupuesto total, el presupuesto consumido y el que queda disponible. Esta información permite, entre otras cosas, automatizar la generación de una alerta cuando el presupuesto disponible disminuye por debajo de una cierta cantidad.

En este artículo se explica cómo automatizar el proceso de login y la descarga de dicho informe, utilizando un script perl.

0. Prerequisitos

El procedimiento que se explica en este artículo requiere que se hayan instalado previamente los módulos CPAN:

  • WWW::Mechanize::GZip
  • LWP::Protocol::https

Para ello, en un sistema debian o ubuntu debemos haber instalado también las librerías SSL requeridas:

1. Proceso de login

Cuando accedemos a la url http://adwords.google.com desde un navegador en el que no nos hemos validado previamente, somos redirigidos al formulario de login, que se encuentra en una url de la forma:

adwords-login

Una vez introducido el usuario y la contraseña, al hacer el submit el navegador accede a la url de proceso del formulario (https://accounts.google.com/ServiceLoginAuth). A continuación, pasa por varias urls mediante una serie de redirecciones 302, hasta que carga la página de inicio de adwords.

En este proceso, el navegador recibe los cookies que necesita para el acceso como usuario autentificado.

Todo este proceso se puede automatizar en perl utilizando el módulo WWW::Mechanize::GZip disponible en CPAN. El código es el siguiente:

En la página de inicio de adwords, se incluye un token que necesitaremos más tarde para realizar la descarga del informe. También se encuentran en ella los valores de ‘effectiveUserId’ y ‘customerId’ (que son utilizados a menudo en forma de argumentos ‘__u’ y ‘__c’). Utilizando expresiones regulares es sencillo extraer estos valores.

2. Descarga del informe resumen de presupuesto

Desde la página de inicio, la pestaña “Budget” permite acceder al informe resumen del presupuesto de los clientes gestionados por la cuenta MCM.

También hay un botón para realizar la descarga del informe en formato csv.

adwords-budget-summary

Analizando con Firebug los accesos que realiza el navegador cuando se pulsa el botón de descarga del informe, comprobamos que realiza una solicitud POST a la url: “https://adwords.google.com/mcm/file/ClientSummary”. En la solicitud se envía un parámetro “token”, cuyo valor es el que hemos obtenido previamente, y un parámetro “mcsSelector”, con un valor que representa el formato del informe a descargar.

De nuevo, utilizando Mechanize, es sencillo reproducir por programa este acceso:

Como podemos ver, en la última línea realizamos la conversión a “UTF-8” desde el formato “UTF-16 little endian” con el que el servidor entrega los datos.

3. Proceso del informe

Ya sólo queda procesar el informe. Dado que está en formato TSV (Valores separados por tabuladores), tenemos en perl muchas maneras de procesarlo. Por ejemplo:

Referencias:

http://stackoverflow.com/questions/15071327/no-content-disposition-header-in-response-from-mechanize

 

 Publicado por en 6:48 am

 Deja un comentario

(requerido)

(requerido)