970 anunciantes en línea
970 anunciantes en línea
Bienvenidos a la Comunidad Oficial de Google AdWords
favorite_border

Personalizando Scripts: Envío de informe por email

En este artículo vamos a coger un script de la documentación de Google Developers que nos permite crear un reporte de texto. Vamos a entenderlo y personalizarlo para enviar los datos como contenido de un email y no mostrarlos directamente en la consola como realiza el ejemplo.

 

El script que vamos a utilizar lo podemos encontrar en este enlace:
https://developers.google.com/adwords/scripts/docs/examples/reports?hl=es#create-a-text-report

 

Entendiendo el script

 

En primer lugar, nos encontramos dentro de la función, la declaración de la variable report. En ella, a través del método report() de AdWordsApp obtenemos un informe de Adwords.

 

  var report = AdWordsApp.report(
      'SELECT CampaignName, Clicks, Impressions, Cost ' +
      'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
      'WHERE  Impressions < 10 ' +
      'DURING LAST_30_DAYS');

Realizamos una consulta a la tabla CAMPAIGN_PERFORMANCE_REPORT de los campos CampaignName, Clicks, Impresions y Cost; donde las impresiones son menores de 10 durante los 30 últimos días.

 

En segundo lugar, nos encontramos donde se itera el resultado de las filas asignadas en la variable report y cómo se van imprimiendo sobre la consola.

 

  var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var campaignName = row['CampaignName'];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var cost = row['Cost'];
    Logger.log(campaignName + ',' + clicks + ',' + impressions + ',' + cost);
  }

Asigna a la variable rows a través del método rows() un iterador sobre las filas del informe. Como vemos, a través de la sentencia while, mientras tenga una fila -hasNext()- asigna a la variable row la siguiente fila del conjunto, va asignando a variables concretas el valor de cada campo para esa fila determinada y pinta en la consola a través de Logger.log().

 

Personalizando nuestro script

 

Una vez comentado el script, vamos a personalizarlo para enviar el resultado en el cuerpo de un email para campañas que tengan más de 10 impresiones. Para ello, debemos crear el cuerpo del email donde vamos a insertar los datos dentro de una tabla HTML.

 

  var email = '<html><body>Resumen de últimos 30 días';
    email += '<table border="1" width="95%" style="border-collapse:collapse;">';
    email += '<tr>';
    email += '<td align="left"><b>Campaña</b></td>';
    email += '<td align="center"><b>Clics</b></td>';
    email += '<td align="center"><b>Impresiones</b></td>';
    email += '<td align="center"><b>Coste</b></td>';
    email += '</tr>';
  
    // AQUÍ VAMOS A COLOCAR LOS DATOS DE CADA FILA //
  
    email += '</table>';
    email += '</body></html>';

 

Ahora deberemos agregar los resultados y en lugar de imprimirlos por pantalla lo pasamos en la tabla y sustituimos dentro del código anterior.

 

 while (rows.hasNext()) {
    var row = rows.next();
    email += '<tr>';
    email += '<td align="left">'+ row['CampaignName'] +'</td>';
    email += '<td align="center">'+ row['Clicks'] +'</td>';
    email += '<td align="center">'+ row['Impressions'] +'</td>';
    email += '<td align="center">'+ row['Cost'] +'</td>';
    email += '</tr>';
  }

Para finalizar, vamos a enviarnos el email a través de la clase MailApp (https://developers.google.com/apps-script/reference/mail/mail-app).

 

Para ello, utilizaremos el método sendEmail y necesitamos 4 parámetros: el email que va a recibir el informe, el asunto, el cuerpo y las opciones de email.

 

var recipient = 'email@midominio.com';
  var subject = 'Informe AdWords';
  var body = email;
  var options = { htmlBody : email };
  
  MailApp.sendEmail(recipient, subject, body, options);

Con esto, tenemos finalizado nuestra personalización del script original. Os dejo con el script completo modificando la consulta para que muestre las campañas con más de 10 impresiones, en lugar de con menos como indicaba en el ejemplo original.

 

function main() {
   var report = AdWordsApp.report(
      'SELECT CampaignName, Clicks, Impressions, Cost ' +
      'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
      'WHERE  Impressions > 10 ' +
      'DURING LAST_30_DAYS');
  
  var rows = report.rows();
  
  var email = '<html><body>Resumen de últimos 30 días';
    email += '<table border="1" width="95%" style="border-collapse:collapse;">';
    email += '<tr>';
    email += '<td align="left"><b>Campaña</b></td>';
    email += '<td align="center"><b>Clics</b></td>';
    email += '<td align="center"><b>Impresiones</b></td>';
    email += '<td align="center"><b>Coste</b></td>';
    email += '</tr>';
  
 while (rows.hasNext()) {
    var row = rows.next();
    email += '<tr>';
    email += '<td align="left">'+ row['CampaignName'] +'</td>';
    email += '<td align="center">'+ row['Clicks'] +'</td>';
    email += '<td align="center">'+ row['Impressions'] +'</td>';
    email += '<td align="center">'+ row['Cost'] +'</td>';
    email += '</tr>';
  }
  
    email += '</table>';
    email += '</body></html>';
  
  var recipient = 'email@midominio.com';
  var subject = 'Informe AdWords';
  var body = email;
  var options = { htmlBody : email };
  
  MailApp.sendEmail(recipient, subject, body, options);
}

En un próximo artículo comentaremos como agregar más métricas a nuestro informe automático enviado por email.

 

Espero que os haya resultado útil.

Un saludo.

Acerca de Dave Medina

Ingeniero Informático y profesional en Marketing Digital. Centrado en dar soluciones y automatizar todo el proceso comercial, desde la captación de clientes potenciales a la venta final, con el claro objetivo de aumentar el volumen de negocio sin descuidar la rentabilidad.

Comentarios
por Maite M
abril 2016

Muy bien explicado, paso a paso y perfectamente entendible para todos los niveles. 

Muchas gracias por el aporte @DaveMedina, esperamos más artículos de éste tipo pronto! Emoticono feliz

por MaiMolina Colaborador Principal
abril 2016

Complementarlo con el también muy útil artículo de @JoseRomeroSEM: https://www.es.advertisercommunity.com/t5/Mejorar-resultados/Script-para-encontrar-quot-Errores-de-N...

 

A quitarle el miedo a los scripts!

 

Muy bueno aportes chicos! Emoticono feliz))

por MarceloFdez Usuario Destacado
abril 2016