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

Personalizando Scripts (III) – Combinando reportes en nuestro informe

Para finalizar el bloque de informes vamos a combinar datos recogidas de otra vista de reporte.

 

Adjunto los otros dos artículos anteriores al que pertenece esta serie.

Personalizando Scripts: Envío de informe por email

Personalizando Scripts: Agregando nuevas métricas a nuestro informe (II)

 

Agregando nueva reporte

 

Actualmente estábamos cogiendo los datos del reporte CAMPAIGN_PERFORMANCE_REPORT que incluye todas las estadísticas agregadas de forma predeterminada a nivel de campaña.

 

En este caso vamos a ampliar la información de este informe con el reporte ADGROUP_PERFORMANCE_REPORT que incluye todas las estadísticas agregadas de forma predeterminada, pero en lugar de a nivel de campaña, a nivel de grupo de anuncio.

 

Vamos a montar nuestra nueva consulta hacia ADGROUP_PERFORMANCE_REPORT. En este enlace tenemos todos los campos que se pueden consultar: 

https://developers.google.com/adwords/api/docs/appendix/reports/adgroup-performance-report

 

     var grupo = AdWordsApp.report(
         'SELECT Clicks ,Impressions, Ctr, AveragePosition, Conversions, CostPerAllConversion, Cost ' +
         'FROM   ADGROUP_PERFORMANCE_REPORT ' +
         'DURING LAST_14_DAYS');

 

Enlazando ambos reportes

 

Buscamos que nos muestre el listado de grupos de anuncios a cada campaña y después el total de la campaña como se muestra en el siguiente esquema.

 

Campaña 1
     Grupo de Anuncios 1.1
     Grupo de Anuncios 1.2
Total de la campaña 1
Campaña 2
     Grupo de Anuncios 2.1
     Grupo de Anuncios 2.2
     Grupo de Anuncios 2.3
Total de la campaña 2

 

Necesitamos identificar el identificador único de la campaña para poder pedir únicamente los grupos de anuncios de dicha campaña. Simplemente deberíamos agregar el campo del identificador tal y como se representa.

 

   var report = AdWordsApp.report(
      'SELECT CampaignId, CampaignName, Clicks, Impressions, Ctr, AveragePosition, Conversions, CostPerAllConversion, Cost ' +
      'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
      'DURING LAST_14_DAYS');

 

Ahora, cada vez que se recorre una nueva fila (una campaña) hay que realizar la consulta de los grupos de anuncios que pertenecen a la campaña actual. Recuperamos el dato del campo CampaignId y le indicamos en el WHERE que sean sólo los grupos de anuncios que pertenecen a la fila de campaña que estamos recorriendo.

 

     var grupo = AdWordsApp.report(
         'SELECT AdGroupName, Clicks ,Impressions, Ctr, AveragePosition, Conversions, CostPerAllConversion, Cost ' +
         'FROM   ADGROUP_PERFORMANCE_REPORT ' +
         'WHERE  CampaignId = ' + row['CampaignId'] +
         ' DURING LAST_14_DAYS');

Como podéis observar, hay un espacio delante de DURING en la última fila, esto se debe a que no hemos puesto el espacio en la fila del WHERE. En el caso, de ponerle el espacio en el WHERE en lugar de la fila del DURING deberemos concatenar un espacio final como indicamos a continuación. 

 

'WHERE  CampaignId = ' + row['CampaignId'] + " " +

 

Representar los resultados en la tabla

 

Por último, como hemos realizado en los otros dos artículos debemos representar los campos obtenidos en las tablas con código HTML

 

Por lo que empezaríamos abriendo y cerrando la tabla fuera del bucle principal de campaña. Agregamos la cabecera y los resultados de la campaña en el bucle principal de campaña y, entre estas dos filas que creamos, los diferentes resultados para los grupos de anuncios de la campaña actual dentro del bucle de grupo de anuncios. Lo podemos ver mejor a continuación.

 

   var email = '<html><body>Resumen de últimos 14 días';
   email += '<table border="1" width="95%" style="border-collapse:collapse;">';

   // BUCLE CAMPAÑA

      email += '<tr bgcolor="#CCCCCC">';
      email += '<td align="left"><b>' + row['CampaignName'] + '</b></td>';
      email += '<td align="center"><b>Clics</b></td>';
      email += '<td align="center"><b>Impresiones</b></td>';
      email += '<td align="center"><b>CTR</b></td>';
      email += '<td align="center"><b>P. Media</b></td>';
      email += '<td align="center"><b>Conversiones</b></td>';
      email += '<td align="center"><b>Coste/Conv</b></td>';
      email += '<td align="center"><b>Coste</b></td>';
      email += '</tr>';

                // BUCLE GRUPO DE ANUNCIO

                email += '<tr bgcolor="#EEEEEE">';
                email += '<td align="left">'+ rowgrupo['AdGroupName'] +'a</td>';
                email += '<td align="center">'+ rowgrupo['Clicks'] +'</td>';
                email += '<td align="center">'+ rowgrupo['Impressions'] +'</td>';
                email += '<td align="center">'+ rowgrupo['Ctr'] +'</td>';
                email += '<td align="center">'+ rowgrupo['AveragePosition'] +'</td>';
                email += '<td align="center">'+ rowgrupo['Conversions'] +'</td>';
                email += '<td align="center">'+ rowgrupo['CostPerAllConversion'] +'</td>';
                email += '<td align="center">'+ rowgrupo['Cost'] +'</td>';
                email += '</tr>';

                // FIN BUCLE GRUPO DE ANUNCIO

      email += '<tr bgcolor="#DDDDDD">';
      email += '<td align="left">Total Campaña</td>';
      email += '<td align="center">'+ row['Clicks'] +'</td>';
      email += '<td align="center">'+ row['Impressions'] +'</td>';
      email += '<td align="center">'+ row['Ctr'] +'</td>';
      email += '<td align="center">'+ row['AveragePosition'] +'</td>';
      email += '<td align="center">'+ row['Conversions'] +'</td>';
      email += '<td align="center">'+ row['CostPerAllConversion'] +'</td>';
      email += '<td align="center">'+ row['Cost'] +'</td>';
      email += '</tr>';

   // FIN BUCLE CAMPAÑA
   email += '</table>';
   email += '</body></html>';

 

El resultado

 

Una vez unido todo, el resultado final de nuestra personalización sería este:

 

function main() {
 
   var report = AdWordsApp.report(
      'SELECT CampaignId, CampaignName, Clicks, Impressions, Ctr, AveragePosition, Conversions, CostPerAllConversion, Cost ' +
      'FROM   CAMPAIGN_PERFORMANCE_REPORT ' +
      'DURING LAST_14_DAYS');
 
   var rows = report.rows();
  
   var email = '<html><body>Resumen de últimos 14 días';
      email += '<table border="1" width="95%" style="border-collapse:collapse;">';
  
   while (rows.hasNext()) {
    
      var row = rows.next();
      email += '<tr bgcolor="#CCCCCC">';
      email += '<td align="left"><b>' + row['CampaignName'] + '</b></td>';
      email += '<td align="center"><b>Clics</b></td>';
      email += '<td align="center"><b>Impresiones</b></td>';
      email += '<td align="center"><b>CTR</b></td>';
      email += '<td align="center"><b>P. Media</b></td>';
      email += '<td align="center"><b>Conversiones</b></td>';
      email += '<td align="center"><b>Coste/Conv</b></td>';
      email += '<td align="center"><b>Coste</b></td>';
      email += '</tr>';
      
     var grupo = AdWordsApp.report(
         'SELECT AdGroupName, Clicks ,Impressions, Ctr, AveragePosition, Conversions, CostPerAllConversion, Cost ' +
         'FROM   ADGROUP_PERFORMANCE_REPORT ' +
         'WHERE  CampaignId = ' + row['CampaignId'] +
         ' DURING LAST_14_DAYS');
   
     var rowsgrupo = grupo.rows();
    
     while (rowsgrupo.hasNext()) {
        
           var rowgrupo = rowsgrupo.next();
           email += '<tr bgcolor="#EEEEEE">';
           email += '<td align="left">'+ rowgrupo['AdGroupName'] +'a</td>';
           email += '<td align="center">'+ rowgrupo['Clicks'] +'</td>';
           email += '<td align="center">'+ rowgrupo['Impressions'] +'</td>';
           email += '<td align="center">'+ rowgrupo['Ctr'] +'</td>';
           email += '<td align="center">'+ rowgrupo['AveragePosition'] +'</td>';
           email += '<td align="center">'+ rowgrupo['Conversions'] +'</td>';
           email += '<td align="center">'+ rowgrupo['CostPerAllConversion'] +'</td>';
           email += '<td align="center">'+ rowgrupo['Cost'] +'</td>';
           email += '</tr>';
     }
    
      email += '<tr bgcolor="#DDDDDD">';
      email += '<td align="left">Total Campaña</td>';
      email += '<td align="center">'+ row['Clicks'] +'</td>';
      email += '<td align="center">'+ row['Impressions'] +'</td>';
      email += '<td align="center">'+ row['Ctr'] +'</td>';
      email += '<td align="center">'+ row['AveragePosition'] +'</td>';
      email += '<td align="center">'+ row['Conversions'] +'</td>';
      email += '<td align="center">'+ row['CostPerAllConversion'] +'</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);
}

 

Espero que os haya resultado útil y os sirva para crear vuestros reportes personalizados.

 

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.