Фильтрация строк во встроенных сводках

Например, вы разработали для своих клиентов веб-приложение, в которое они могут входить со своим логином и паролем и смотреть данные о продажах в различных магазинах. Разные клиенты имеют доступ к разным наборам магазинов. Вам нужно встроить сводку Студии данных в приложение так, чтобы после входа клиент видел только данные о своих магазинах и при этом ему не нужно было входить в аккаунт Google.

Предлагается следующее решение: создать коннектор с открытым кодом, передать токен через URL встраивания, а затем отфильтровать данные с учетом содержащейся в токене информации.

Требования

  • Пользователи, просматривающие сводку, должны выполнить вход в стороннее приложение.
  • Приложение должно передать уникальный токен в сводку Студии данных через URL встраивания. Токен можно использовать для поиска отфильтрованной информации и для передачи такой информации в зашифрованном виде.
  • Коннектор с открытым кодом должен поддерживать конвертацию токена в отфильтрованные значения.

Ограничения

  • Если вы используете G Suite и ваш администратор отключил доступ по ссылке к файлам на Диске, то вы не сможете делиться отчетами с пользователями, не относящимися к вашей организации.

Решение

Выполните описанные ниже действия.

Создайте токен пользователя в веб-приложении

В веб-приложении создайте уникальный токен для каждого пользователя, выполнившего вход. Позже этот токен нужно будет передать во встроенную сводку.

Вам нужно отфильтровать данные с помощью токена. Для этого используйте один из следующих вариантов:

  • Создайте конечную точку API, возвращающую отфильтрованные данные или пользовательскую информацию для нужного токена.
  • Зашифруйте пользовательскую информацию в токене так, чтобы ее можно было расшифровать в коннекторе.

Создайте коннектор с открытым кодом

Сначала мы рекомендуем посмотреть видео о принципах работы коннектора с открытым кодом и выполнить практическое задание. Вы также можете воспользоваться инструментарием для создания коннекторов, который упростит вашу работу.

Напишите код коннектора

  1. Функция getConfig() должна возвращать хотя бы один элемент конфигурации. Он будет использоваться для создания токена на основе параметров, указанных в URL встраивания.

    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() получает доступ к токену через объект request.configParams. Используйте токен, чтобы получать отфильтрованные или фильтровать уже полученные данные.
    Токен для нашего примера: request.configParams.token. В функции getData() токен передается в конечную точку REST API, чтобы получить список идентификаторов магазинов, которые затем используются в SQL-запросе для получения данных о продажах.

    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;
        }
        

Создайте сводку

  1. Прочитайте статью о развертываниях и версиях коннектора.
  2. Создайте рабочее развертывание коннектора.
  3. Чтобы создать источник данных и отчет в Студии данных, используйте ссылку на развертывание Production.
  4. Разрешите читателям отчета изменять значения параметра конфигурации token.
  5. Откройте доступ к сводке отдельным пользователям или всем, у кого есть ссылка.
  6. Разрешите встраивание отчета.

Встройте сводку в свою платформу

  1. Узнайте, за что отвечает каждый из параметров в URL отчета.
  2. Используя параметры URL, передайте динамически созданное значение токена во встроенный отчет Студии данных.
    Ваш URL встраивания должен выглядеть примерно так:
    <pre class="prettyprint">https://datastudio.google.com/embed/reporting/REPORT_ID/page/PAGE_ID?config=%7B%22ds0%22%3A%7B%22token%22%3A%22ZNACHENIE_TOKENA%22%7D%7D

Рекомендации

  • Создавайте токены с коротким сроком действия.
  • Убедитесь, что в сводке нельзя увидеть данные при использовании недействительного токена.