O Python 2 não é mais compatível com a comunidade. Recomendamos que você migre aplicativos do Python 2 para o Python 3.

Como fazer a integração com o Google Analytics

Com o Google Analytics Platform, é possível medir as interações dos usuários com os negócios em diversos dispositivos e ambientes. A plataforma oferece todos os recursos de computação para coletar, armazenar, processar e reportar essas interações dos usuários.

A coleta de dados de análise ocorre no lado do cliente e do servidor. Para o envio de dados, o Google Analytics oferece APIs e SDKs fáceis de usar. Além disso, desenvolvemos um código utilizado nos aplicativos do App Engine para enviar facilmente análises do lado do servidor ao Google Analytics.

Coleta de dados de análise do lado do cliente

Com SDKs e APIs de coleta de dados, é possível avaliar a interação dos usuários com o conteúdo e as iniciativas de marketing. Depois da implementação, será possível ver dados de interação dos usuários no Google Analytics ou nas APIs Reporting. Para mais detalhes sobre a coleta de dados de análise do lado do cliente, selecione um link abaixo, de acordo com o tipo de cliente:

  • Rastreamento da Web (analytics.js): meça a interação do usuário com sites ou aplicativos da Web.
  • Android: meça a interação do usuário com aplicativos para Android.
  • iOS: meça a interação do usuário com aplicativos para iOS.
  • Protocolo de avaliação - meça a interação do usuário em qualquer ambiente com este protocolo de nível inferior.

Coleta de dados de análise do lado do servidor no App Engine

O aplicativo do App Engine já tem um mecanismo para geração de registros de eventos, mas vale a pena rastrear eventos específicos do lado do servidor no Google Analytics. Veja a seguir alguns benefícios:

  • Análise de dados históricos — com o App Engine, é possível configurar o número máximo de dias ou o tamanho do arquivo de registros. Após esse período, você não terá acesso a esses arquivos de registros. O rastreamento de eventos no Google Analytics permite visualizar, por mais tempo, os eventos passados.
  • Rastrear eventos-chave - os arquivos de registros são muito detalhados, com diversos componentes do aplicativo gravando dados neles. Com o uso do rastreamento de eventos, é possível identificar os eventos-chave em que você tiver interesse e rastreá-los com alguns metadados.
  • Interface de usuário avançada: aproveite a sofisticada interface de usuário oferecida pelo Google Analytics para visualizar, gerar relatórios e exportar esses eventos do lado do servidor.

Isso fica fácil com a integração do código de origem de amostra abaixo no aplicativo do App Engine. Para mais informações sobre essa abordagem, consulte o guia de desenvolvedores do Google Analytics para o Acompanhamento de eventos.

Amostra de código-fonte

Java

import com.google.appengine.api.urlfetch.URLFetchService;
import com.google.appengine.api.urlfetch.URLFetchServiceFactory;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.net.URL;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.http.client.utils.URIBuilder;

@SuppressWarnings("serial")
// With @WebServlet annotation the webapp/WEB-INF/web.xml is no longer required.
@WebServlet(
    name = "analytics",
    description = "Analytics: Send Analytics Event to Google Analytics",
    urlPatterns = "/analytics"
)
public class AnalyticsServlet extends HttpServlet {

  @Override
  public void doGet(HttpServletRequest req, HttpServletResponse resp)
      throws IOException, ServletException {
    String trackingId = System.getenv("GA_TRACKING_ID");
    URIBuilder builder = new URIBuilder();
    builder
        .setScheme("http")
        .setHost("www.google-analytics.com")
        .setPath("/collect")
        .addParameter("v", "1") // API Version.
        .addParameter("tid", trackingId) // Tracking ID / Property ID.
        // Anonymous Client Identifier. Ideally, this should be a UUID that
        // is associated with particular user, device, or browser instance.
        .addParameter("cid", "555")
        .addParameter("t", "event") // Event hit type.
        .addParameter("ec", "example") // Event category.
        .addParameter("ea", "test action"); // Event action.
    URI uri = null;
    try {
      uri = builder.build();
    } catch (URISyntaxException e) {
      throw new ServletException("Problem building URI", e);
    }
    URLFetchService fetcher = URLFetchServiceFactory.getURLFetchService();
    URL url = uri.toURL();
    fetcher.fetch(url);
    resp.getWriter().println("Event tracked.");
  }
}

Python

def track_event(category, action, label=None, value=0):
    data = {
        'v': '1',  # API Version.
        'tid': GA_TRACKING_ID,  # Tracking ID / Property ID.
        # Anonymous Client Identifier. Ideally, this should be a UUID that
        # is associated with particular user, device, or browser instance.
        'cid': '555',
        't': 'event',  # Event hit type.
        'ec': category,  # Event category.
        'ea': action,  # Event action.
        'el': label,  # Event label.
        'ev': value,  # Event value, must be an integer
    }

    response = requests.post(
        'http://www.google-analytics.com/collect', data=data)

    # If the request fails, this will raise a RequestException. Depending
    # on your application's needs, this may be a non-error and can be caught
    # by the caller.
    response.raise_for_status()

@app.route('/')
def track_example():
    track_event(
        category='Example',
        action='test action')
    return 'Event tracked.'