Cómo crear informes profesionales de Google Business Profile en Looker Studio

Para conocer el rendimiento de nuestras acciones de marketing y tomar decisiones estratégicas, es importante contar con informes claros.

Si gestionas fichas de Google Business Profile (GBP), sabrás las limitaciones que tiene para mostrar la evolución del negocio mes a mes.

Y si no dispones de herramientas de pago, como Supermetrics o Coupler.io, Looker Studio es tu mejor alternativa gratuita.

Este post es una guía paso a paso para que puedas crear informes de Google Business Profile en Looker Studio, y no tengas que pagar por herramientas de terceros.

Además, te regalo una plantilla de Looker Studio (la herramienta gratuita de Google para crear dashboards personalizados), para que ahorres tiempo y comiences hoy mismo a disfrutar de tus informes.

Requisitos previos para crear informes

Asegurate de tener acceso a la cuenta de Google Bussines Profile para descargar los informes locales del proyecto que quieras medir.

También vas a necesitar una cuenta de Google Drive.

Te recomiendo que utilices la misma cuenta que en Google Bussines Profile, porque vas a tener que conceder permisos más adelante.

Prepara tus carpetas en Google Drive

Crea 2 carpetas en Google Drive:

1. Para guardar tu fuente de datos.
2. Para almacenar los archivos .csv que vas a descargar.

Después crea una hoja de cálculo de Google y ponle un nombre identificativo. Por ejemplo: ‘Fuente de Datos GBP [Nombre Proyecto]’.

En la hoja de cálculo, crea las siguientes pestañas:

  • Informes GBP [Nombre Proyecto] (pestaña principal)
  • DesgloseDinámico
  • DesgloseInteracciones
  • DesgloseBusquedas (extra opcional)
  • RawSearches (extra opcional)

Descarga los informes de Bussines Profile

Ahora, ves a tu cuenta de Google Bussines y selecciona el negocio que quieras medir.

Desplega el menú de ‘Acciones’ y selecciona ‘Estadísticas’.

Paso 1 para descargar informes en Google Bussines Profile

Cuando se abra el menú para seleccionar el periodo, fija el último mes completo.

Pulsa en ‘Descargar Informe’ y listo.

Paso 2 para descargar informes en Google Bussines Profile

Como estás configurando el informe por primera vez, te recomiendo repitas el proceso con los meses anteriores para descargar todo el histórico disponible.

Cuando hayas descargado todos los informes, súbelos a la carpeta de Google Drive que has creado para almacenar los archivos .csv.

Inserta el script de automatización

Ahora ves a la Hoja de Cálculo que has creado para comenzar a crear tu fuente de datos.

Abre ‘Apps Script’ en ‘Extensiones’ para introducir el script con el que vas a automatizar el proceso de importar datos.

Como acceder a appscript en las hojas de calculo de Google

Elimina las líneas de código que te aparecen por defecto e inserta el script para importar los datos que contienen los archivos .csv.

Como imagino que no sabes hacer scripts, puedes usar los que he creado con ayuda de ChatGPT (los tienes aquí, al final de este post).

Insertar script en hojas de cálculo a través de apps script

Si utilizas mi script, deberás cambiar las líneas de ‘INBOX_ID’ y ‘SHEET_MAIN’ con tus datos.

  • SHEET_MAIN es el nombre de la pestaña principal de tu hoja de cálculo.
  • INBOX_ID es la parte final de la URL de la carpeta que has creado para almacenar los .csv en Google Drive.
fragmento de url para script de automatización

Cuando hayas terminado de insertar el script, guarda el proyecto en Apps Script pulsando el icono del disco, o pulsando en el teclado CTRL + S.

Crea tus fuentes de datos para Looker Studio

Una vez configurado el script, vuelve a tu hoja de cálculo y refresca la página pulsando F5.

Debe aparecerte una opción nueva en el menú.

Contiene las 3 macros con las que vas a crear las 3 fuentes de datos que necesitas en Looker Studio.

Menú de scripts en hojas de cálculo de google

Importa los informes de Bussines Profile

Aviso: Si es la primera vez que utilizas esta función, te pedirá que le concedas permisos para ejecutar. Si tienes alguna duda con esto, consulta este apartado al final del post

Ahora importa los datos de los informes que has dejado en tu carpeta de Google Drive, haciendo clic en la primera opción: ‘Importar informes’.

Asegurate de que estás en la pestaña principal de tu hoja de cálculo.

Esta acción primero comprueba si hay documentos nuevos en tu carpeta de Drive y luego extrae los datos que no tengas en la tabla.

Así que cuando subas un archivo nuevo a la carpeta de Drive y pulses en ‘Importar informes’, no te duplicará los datos porque solo importará los que no estén en tu hoja de cálculo.

Genera el pívot de búsquedas

La siguiente acción: ‘Regenerar pívot de búsquedas’ es para que puedas comparar en Looker Studio, los datos de los canales de búsqueda de un mes con otro.

Al hacer clic, se creará automáticamente un desglose en la pestaña ‘DesgloseDinámico’.

Genera el pívot de interacciones

La última acción: ‘Regenerar pívot de interacciones’ es para que puedas comparar en Looker Studio, los datos de las acciones que han llevado a cabo los usuarios cuando han visualizado el perfil de Google Bussines.

Al hacer clic, se creará automáticamente un desglose en la pestaña ‘DesgloseInteracciones’.

Con esto ya tienes preparadas las 3 fuentes de datos que necesitas para crear los informes en Looker Studio y medir la evolución con comparativas año a año.

Para mantenerlo actualizado, cada mes deberás seguir 3 sencillos pasos:

  • Descargar el informe mensual en la cuenta de Google Bussines.
  • Subir el archivo a tu carpeta de Google Drive.
  • Activar los 3 scripts en tu hoja de cálculo.

[Extra Opcional] Crea un informe con las Consultas de Búsqueda de GBP

Aunque esta parte la pongo como opcional, es interesante.

Te supondrá un pequeño extra de trabajo cada mes, pero podrás medir los términos de búsqueda locales que activan tu ficha de Bussines Profile.

Incluso te sirve para cruzar datos con los informes de Google Search Console.

Importante: Debes tener en cuenta que las consultas con menos de 15 búsquedas mensuales Google las muestra así ‘<15’. Por este motivo, en la importación de datos se le asignará un valor de 7 para tener una media y analizar por buckets.

Para generar este informe, sigue los siguientes pasos.

Inserta el Script para crear la fuente de datos con las Consultas de Búsqueda de GBP

Abre de nuevo Apps Script en tu hoja de cálculo.

Añade un archivo nuevo de script y ponle un nombre identificativo, por ejemplo: Querys.

Ahora, introduce el script para crear el Desglose de Búsquedas. 

Haz clic aquí para ir al script que comparto en este post.

Como añadir un archivo nuevo en apps script

Guarda el proyecto (CTRL +S), vuelve a tu hoja de cálculo y refresca la página (F5).

Ahora en la nueva sección de tu menú te aparecerá una cuarta opción: ‘Importar Desglose Búsquedas’.

Genera la pestaña de Querys

Ves al perfil de Google Bussines y pulsa en ‘Rendimiento’.

Cómo acceder a los informes de rendimiento en Google Bussines Profile

En la pestaña que se te abre, baja hasta ‘Búsquedas que han mostrado tu Perfil de Empresa en los resultados de búsqueda’.

Clica en el botón de ‘Más información’.

Consultas de búsqueda en GBP

Selecciona con el ratón todas las consultas de búsqueda y dale a copiar (atajo de teclado: CTRL + C).

Ahora ves en tu hoja de cálculo a la pestaña ‘RawSearches’.

Asegurate de que la hoja está vacía.

Para pegar los términos de búsqueda, sitúate en la casilla A1 y pulsa en tu teclado CTRL + SHIFT + V.

Después, en la casilla B1, debes introducir la fecha que corresponda al mes de los datos en este formato: día/mes/año.

Por ejemplo: 1/04/2025

Como solo vas a tener en cuenta en los informes de Looker Studio el mes y el año, para que no te haga cosas raras pon siempre el día 1 de cada mes.

La información de la tabla te tiene que quedar así:

formato de tabla para las búsquedas de google bussines profile

Ahora activa la macro 4) en tu menú GBP Autom. para importar los datos a tu pestaña ‘DesgloseBusquedas’.

Importar con script el desglose de búsqueda de bussines profile

Ya tienes las 4 fuentes de datos que necesitas para aprovechar mi plantilla gratuita de Looker Studio.

Conecta las fuentes de datos en Looker Studio

1. Inicia sesión en Looker Studio.

2. Clica en el botón de ‘crear’ y selecciona ‘Fuente de datos’ (esto lo tendrás que repetir 4 veces, una por cada pestaña en la hoja de cálculo).

cómo importar una fuente de datos en looker studio

3. Selecciona la hoja de cálculo que has creado como fuente de datos y añade una de las pestañas.

  • Informes GBP [Nombre Proyecto]
  • DesgloseDinámico
  • DesgloseInteracciones
  • DesgloseBusquedas

En el menú de opciones marca ‘usar la primera fila como encabezados’ e ‘incluir celdas ocultas y excluidas’.

Dale a conectar en la esquina superior derecha y repite el proceso con las 3 pestañas de datos restantes.

cómo añadir hojas de cálculo de google como fuente de datos en looker studio

Ahora ya puedes trabajar en tus dashboards de Looker Studio y crear informes personalizados de Bussines Profile para ti o tus clientes.

Aunque si no sabes todavía como crear informes en la aplicación, o no quieres perder mucho tiempo creando, te invito a que utilices mi plantilla.

Cómo importar la plantilla de Looker Studio

Cuando hayas conectado todas tus fuentes de datos, haz clic en este enlace para que se te cargue mi plantilla en otra ventana.

Una vez abierta, haz clic en; ‘Usar mis propios datos’ > ‘Sustituir’, para conectar tus fuentes de datos a la plantilla.

Cómo sustituir fuentes de datos en plantillas de looker studio

Se te abrirá desde abajo de la pantalla el panel de tus ‘Hojas de Cálculo’,  para seleccionar las fuentes de datos.

Cuando las hayas sustituido todas, haz clic en ‘Editar y compartir’… ¡y ya lo tienes!

¿Qué puedes medir es este informe de GBP?

Este informe consta de 4 hojas, cada una con un propósito de análisis y diferentes filtros que puedes utilizar a tu conveniencia (fecha, categoría de dispositivo, país, término de búsqueda…).

1. Rendimiento mensual: Se trata de la visión general del último mes completo, con los valores totales de visualizaciones e interacción en tu perfil de GBP.

Incluye el desglose y el porcentaje de cambios respecto al mismo mes del año anterior.

Puedes ver los meses anteriores cambiando la fecha en el calendario.

 

2. Gráficas de Evolución: Aquí puedes ver la evolución de las visualizaciones y las interacciones en los últimos 18 meses.

Cómo están desglosadas, es muy fácil determinar cuales son las interacciones más importantes para el negocio y qué canales son los que más impacto tienen.

 

3. Desglose de Búsquedas: Aquí puedes consultar las Búsqueda que han mostrado tu Perfil de Empresa.

Puedes segmentar por grupos según su volumen (buckets) y por Query.

 

4. Histórico de Rendimiento: Aquí tienes el total de visualizaciones e interacciones  de tu perfil de Google Bussines que has introducido.

Tienes un calendario para filtrar fechas concretas y ver el rendimiento de ese periodo concreto.

Ahora te toca a tí aplicar lo aprendido

Ponte manos a la obra y sigue el paso a paso para crear tu informe personalizado.

A continuación tienes los scripts para que puedas automatizar la importación de datos y a la plantilla puedes acceder desde este enlace.

¿Qué hago si tengo varios locales en el mismo perfil de GBP?

Si gestionas varias ubicaciones o negocios diferentes, puedes duplicar la hoja de cálculo para cada uno, o adaptar el script para que distinga por código de tienda.

Scripts de automatización

Para volver a la explicación del script 1 haz clic aquí.

Para ir al script 2 haz clic aquí.

Script 1: (Haz clic en ‘Copy’ en la esquina superior derecha del código)

				
					/***** CONFIG *******************************************************/
const INBOX_ID    = 'INSERTA AQUÍ EL ID DE TU URL';
const DONE_ID     = '';
const SHEET_MAIN  = 'INSERTA AQUÍ EL NOMBRE DE TU PESTAÑA PRINCIPAL';
const SHEET_PIVOT = 'DesgloseDinámico';
const SHEET_INT   = 'DesgloseInteracciones';
/*******************************************************************/

/** Extrae 'YYYY-MM' de un filename tipo '2025-3-1…' */
function getPeriodo(fn) {
  const m = fn.match(/(\d{4})-(\d{1,2})-\d{1,2}/);
  return m ? m[1] + '-' + ('0' + m[2]).slice(-2) : null;
}

/** Menú con 3 opciones */
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('GBP Autom.')
    .addItem('1) Importar informes', 'importarInformesGbp')
    .addItem('2) Regenerar pivot búsquedas', 'generarDesglose')
    .addItem('3) Regenerar pivot interacciones', 'generarDesgloseInteracciones')
    .addToUi();
}

/** 1) Importa solo CSVs nuevos y actualiza ambos pivots */
function importarInformesGbp() {
  const ss   = SpreadsheetApp.getActiveSpreadsheet();
  let   main = ss.getSheetByName(SHEET_MAIN);
  if (!main) main = ss.insertSheet(SHEET_MAIN);

  // 1. AÑADE ENCABEZADOS SI NO HAY NADA
  if (main.getLastRow() === 0) {
    main.appendRow([
      'Periodo','Año','Mes','Código de tienda','Nombre de la empresa','Dirección',
      'Total Búsquedas','Búsq. Google (móvil)','Búsq. Google (ordenador)',
      'Maps (móvil)','Maps (ordenador)',
      'Total Int.','Llamadas','Mensajes','Reservas','Cómo llegar',
      'Clics web','Pedidos comida','Clics menú','Reservas hoteles'
    ]);
  }

  // 2. CREA EL SET DE CLAVES EXISTENTES NORMALIZANDO A 'YYYY-MM|CODIGO'
  const last   = main.getLastRow();
  const valores = last > 1
    ? main.getRange(2, 1, last - 1, 4).getValues()
    : [];
  const claves = new Set();
  valores.forEach(r => {
    let per = r[0];
    if (per instanceof Date) {
      per = Utilities.formatDate(per, Session.getScriptTimeZone(), 'yyyy-MM');
    } else {
      per = per.toString().slice(0, 7);
    }
    const cod = r[3];
    if (per && cod) claves.add(`${per}|${cod}`);
  });

  // 3. LEER CSVs de la carpeta
  const inbox = DriveApp.getFolderById(INBOX_ID);
  const done  = DONE_ID ? DriveApp.getFolderById(DONE_ID) : null;
  const archivos = [];
  const it = inbox.getFilesByType(MimeType.CSV);
  while (it.hasNext()) {
    const f = it.next();
    const p = getPeriodo(f.getName());
    if (p) archivos.push({ file: f, periodo: p });
  }
  archivos.sort((a, b) => a.periodo.localeCompare(b.periodo));

  // 4. IMPORTAR SOLO LOS NUEVOS
  let importados = 0;
  archivos.forEach(o => {
    const p    = o.periodo;
    const f    = o.file;
    const data = Utilities.parseCsv(f.getBlob().getDataAsString('UTF-8'));
    if (data.length < 3) return;
    const r = data[2];
    const cod = r[0];
    const key = `${p}|${cod}`;
    if (claves.has(key)) return;  // YA ESTÁ

    // parseo valores
    const vals = r.map(x => Number(x) || 0);
    const bMov = vals[4], bOrd = vals[5], mMov = vals[6], mOrd = vals[7];
    const tBus = bMov + bOrd + mMov + mOrd;
    const llam = vals[8], mens = vals[9], resv = vals[10], clg = vals[11];
    const cWeb = vals[12], pCom = vals[13], cMen = vals[14], rHot = vals[15];
    const tInt = llam + mens + resv + clg + cWeb + pCom + cMen + rHot;
    const [yyyy, mm] = p.split('-').map(n => +n);

    main.appendRow([
      p, yyyy, mm, cod, r[1], r[2],
      tBus, bMov, bOrd, mMov, mOrd,
      tInt, llam, mens, resv, clg,
      cWeb, pCom, cMen, rHot
    ]);
    claves.add(key);
    importados++;

    // mover a DONE si toca
    if (done && inbox.getId() !== done.getId()) {
      done.addFile(f);
      inbox.removeFile(f);
    }
  });

  SpreadsheetApp.getUi().alert(
    importados
      ? `✅ Se importaron ${importados} informe(s).`
      : 'No había informes nuevos por importar.'
  );

  // 5. Regenerar ambos pivots
  generarDesglose();
  generarDesgloseInteracciones();
}

/** 2) Reconstruye la hoja DesgloseDinámico (búsquedas) */
function generarDesglose() {
  const ss   = SpreadsheetApp.getActiveSpreadsheet();
  const main = ss.getSheetByName(SHEET_MAIN);
  if (!main) return;
  let piv = ss.getSheetByName(SHEET_PIVOT);
  if (piv) piv.clear(); else piv = ss.insertSheet(SHEET_PIVOT);

  const datos = main.getDataRange().getValues();
  const out   = [['Periodo','Canal','Valor']];

  for (let i = 1; i < datos.length; i++) {
    const r = datos[i];
    const p = r[0]; if (!p) continue;
    out.push([p, 'Búsq. Google (móvil)',     r[7]]);
    out.push([p, 'Búsq. Google (ordenador)', r[8]]);
    out.push([p, 'Google Maps (móvil)',      r[9]]);
    out.push([p, 'Google Maps (ordenador)',  r[10]]);
  }

  piv.getRange(1, 1, out.length, 3).setValues(out);
}

/** 3) Reconstruye la hoja DesgloseInteracciones */
function generarDesgloseInteracciones() {
  const ss   = SpreadsheetApp.getActiveSpreadsheet();
  const main = ss.getSheetByName(SHEET_MAIN);
  if (!main) return;
  let piv = ss.getSheetByName(SHEET_INT);
  if (piv) piv.clear(); else piv = ss.insertSheet(SHEET_INT);

  const datos = main.getDataRange().getValues();
  const out   = [['Periodo','Canal','Valor']];

  for (let i = 1; i < datos.length; i++) {
    const r   = datos[i];
    const per = r[0]; if (!per) continue;
    out.push([per, 'Llamadas',                   r[12]]);
    out.push([per, 'Mensajes',                   r[13]]);
    out.push([per, 'Reservas',                   r[14]]);
    out.push([per, 'Cómo llegar',                r[15]]);
    out.push([per, 'Clics sitio web',            r[16]]);
    out.push([per, 'Pedidos de comida',          r[17]]);
    out.push([per, 'Clics en el menú de comida', r[18]]);
    out.push([per, 'Reservas de hoteles',        r[19]]);
  }

  piv.getRange(1, 1, out.length, 3).setValues(out);
}
				
			

Para volver a la explicación del script 2 haz clic aquí.

Script 2: (Haz clic en ‘Copy’ en la esquina superior derecha del código)

				
					/**
 * 4) Importa la lista de RawSearches (3 líneas por registro)
 *    y la va añadiendo en DesgloseBusquedas sin perder el histórico.
 */
function importarDesgloseBusquedaManual() {
  const ss     = SpreadsheetApp.getActive();
  const raw    = ss.getSheetByName('RawSearches');
  if (!raw) {
    SpreadsheetApp.getUi().alert('❗ La hoja RawSearches no existe.');
    return;
  }

  // 1) Leer periodo de B1 (o cadena vacía si no hay nada)
  const periodo = raw.getRange('B1').getValue().toString().trim() || '';

  // 2) Leer columna A, filtrar líneas vacías
  const lines = raw
    .getRange('A1:A' + raw.getLastRow())
    .getValues()
    .flat()
    .map(String)
    .map(s => s.trim())
    .filter(s => s !== '');

  // 3) Agrupar de 3 en 3 en [periodo, consulta, volumen]
  const rows = [];
  for (let i = 0; i < lines.length; i += 3) {
    const term = lines[i + 1] || '';
    const vol  = lines[i + 2] || '';
    rows.push([ periodo, term, vol ]);
  }
  if (rows.length === 0) {
    SpreadsheetApp.getUi().alert('❗ No hay registros en RawSearches.');
    return;
  }

  // 4) Obtener (o crear) la hoja DesgloseBusquedas
  let target = ss.getSheetByName('DesgloseBusquedas');
  if (!target) {
    target = ss.insertSheet('DesgloseBusquedas');
    target.appendRow(['Periodo','Consulta','Volumen']);
  }

  // 5) Leer los periodos ya importados para no duplicar
  const lastRow     = target.getLastRow();
  const existingPer = lastRow > 1
    ? target.getRange(2, 1, lastRow - 1, 1).getValues().flat()
    : [];
  if (existingPer.includes(periodo)) {
    SpreadsheetApp.getUi().alert(`❗ El periodo "${periodo}" ya fue importado.`);
    return;
  }

  // 6) Añadir filas al final
  target.getRange(lastRow + 1, 1, rows.length, 3).setValues(rows);

  SpreadsheetApp.getUi().alert(`✅ Importadas ${rows.length} consultas para "${periodo}".`);
}

/**
 * Menú personalizado “GBP Autom.” con todas las opciones
 */
function onOpen() {
  SpreadsheetApp.getUi()
    .createMenu('GBP Autom.')
    .addItem('1) Importar informes',             'importarInformesGbp')
    .addItem('2) Regenerar pivot búsquedas',     'generarDesglose')
    .addItem('3) Regenerar pivot interacciones', 'generarDesgloseInteracciones')
    .addSeparator()
    .addItem('4) Importar desglose búsquedas',   'importarDesgloseBusquedaManual')
    .addToUi();
}

				
			

Cómo autorizar el permiso de ejecución

La primera vez que vayas a ejecutar el script, Google te pedirá que concedas permisos para poder ejecutarlo.

Primero te informará que el documento tiene una secuencia de comandos configurada.

Dale a ‘Aceptar’ y continua.

Requerimiento para autorizar permisos de ejecución del script

A continuación, si no tienes una cuenta verificada de desarrollador, te informará que no ha podido verificar la aplicación.

Para poder utilizar el script, primero haz clic en ‘configuración avanzada’.

Al desplegarse, debes pulsar en ‘Ir a [Nombre de proyecto] (no seguro).

Verificación de confianza de la cuenta

Por último, tendrás que seleccionar los tipos de permiso que necesitas conceder para que funcione el script.

Seleccionas todo y pinchas en ‘Continuar’. 

Selecciona los permisos que vas a conceder a apps script
Comparte este post en:

Tabla de contenidos

¿Quieres mejorar tus ventas?

formulario de contacto danicopy

¡Hola! Soy DaniCopy, Consultor SEO y Copywriter.

Aumento las ventas de negocios digitales con optimización SEO y textos que convierten a los visitantes en clientes. 

Mi única pregunta es, ¿te gustaría que tu negocio sea el siguiente?