Filtrar por filas con paneles insertados

Por ejemplo, supongamos que el desarrollador X ofrece una aplicación web a sus clientes, que inician sesión con sus credenciales y pueden consultar los datos de ventas de distintas tiendas. Cada cliente tiene acceso a su propia lista de tiendas. El desarrollador quiere insertar un panel de Data Studio en su aplicación para que, cuando los clientes inicien sesión, solo vean los datos de ventas de las tiendas a las que tienen acceso. Sin embargo, no quiere que tengan que iniciar sesión en su cuenta de Google para que esto suceda.

La solución propuesta consiste en crear un conector comunitario, transmitir un token a través de la URL insertada y, a continuación, filtrar los datos en función del token.

Requisitos

  • Los usuarios que vean el panel deben haber iniciado sesión en la aplicación de terceros.
  • La aplicación debe transmitir un token único al panel de Data Studio a través de la URL insertada. El token puede usarse para buscar la información del filtro o para cifrarla.
  • El conector comunitario debe ser capaz de convertir el token en los valores de filtro.

Limitaciones

  • Si eres cliente de G Suite y tu administrador ha inhabilitado el uso compartido de archivos de Drive con "Cualquier usuario con el enlace", no podrás compartir el informe con usuarios ajenos a tu organización.

Solución

Para implementar la solución, deberás hacer lo siguiente:

Generar un token de usuario en una aplicación web

Generar un token único para cada usuario que haya iniciado sesión en la aplicación web. Más adelante, transferirás este token al panel insertado.

Debes utilizar el token para filtrar los datos importantes. Estas son las opciones disponibles:

  • Crear un punto de conexión API que devuelva los datos filtrados o la información de usuario correspondiente a un token específico.
  • Cifrar la información del usuario en el token para poder descifrarla más adelante en el conector.

Crear un conector comunitario

Para empezar, consulta cómo funcionan los conectores comunitarios y completa el codelab de conectores comunitarios. Utiliza las herramientas de desarrollo local para crear conectores y, de este modo, acelerar y simplificar el proceso de desarrollo.

Escribir el código de los conectores

  1. getConfig() debe devolver al menos un elemento de configuración, que servirá para capturar un token de los parámetros de la URL insertada.

    function getConfig(request) {
          var cc = DataStudioApp.createCommunityConnector();
          var config = cc.getConfig();
    
          config
              .newTextInput()
              .setId('token')
              .setName('Enter user token');
    
          // TODO: Add additional config values if applicable for your connector
    
          config.setDateRangeRequired(false);
          config.setIsSteppedConfig(false);
    
          return config.build();
        }
        
  2. getData() tendrá acceso al token a través del objeto request.configParams. Utiliza el token para ver datos filtrados o para filtrar datos que ya tengas.
    En el ejemplo anterior, el token sería request.configParams.token. En getData(), el token se transfiere a un punto de conexión API REST para generar una lista con IDs de tienda. Los IDs de tienda se usan para crear la consulta de SQL y ver datos de ventas.

    var STORE_ID_API = 'https://www.example.com/api/storeid';
        var QUERY_STRING_PREFIX = "SELECT StoreName, Sales from stores"
    
        function getData(request) {
          var token = request.configParams.token;
    
          var storeIds = getStoreIdList(token);
          var queryString = constructQueryString(storeIds);
          var fetchedData = fetchData(queryString);
    
          // rest of getData() implementation
        }
    
        function getStoreIdList(token) {
          var url = STORE_ID_API;
          var response = UrlFetchApp.fetch(url);
          var parsedResponse = JSON.parse(response);
          return parsedResponse.storeIds;
        }
    
        function constructQueryString(storeIds) {
          var storeIdString = storeIds.join(',');
          var queryString = QUERY_STRING_PREFIX
                            + ' WHERE storeId in ('
                            + storeIdString
                            + ')';
          return queryString;
        }
        

Crear el panel

  1. Consulta cómo funcionan las implementaciones y las versiones en los conectores.
  2. Crea una implementación de producción del conector.
  3. Utiliza el enlace de la implementación de producción para crear una fuente de datos y un informe en Data Studio.
  4. Permite que los lectores del informe modifiquen los valores del parámetro de configuración token.
  5. Comparte el panel con usuarios seleccionados o con "Cualquier usuario con el enlace".
  6. Habilita la inserción del informe.

Insertar el panel en la plataforma

  1. Consulta cómo funcionan los parámetros de URL de los informes.
  2. Transfiere el valor de token generado dinámicamente mediante parámetros de URL al informe de Data Studio insertado.
    La URL insertada tendrá un aspecto similar a este:
    <pre class="prettyprint">https://datastudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22TOKEN_VALUE%22%7D%7D

Recomendaciones

  • Debes crear un token de duración reducida.
  • Asegúrate de que el panel no filtre información cuando se vea con un token no válido.