Передача обращений из U-ON в Google таблицы

Содержание:


Данное решение позволяет отображать актуальные данные обращений и их статусы из CRM U-ON.Travel в Google-таблице: передача данных происходит в момент смены статуса обращения.


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


Для передачи обращений из CRM системы U-ON.Travel в Google Sheets потребуется выполнить несколько основных действий: подключить API для Гугл Таблиц, указать адрес вебхука в U-ON и настроить сценарий в APInita.


1. Настройка Google Sheets API в Google


1. Переходим на https://console.cloud.google.com/ Нажимаем кнопку выбора проекта (1) и далее кнопку "New project" (1):


Передача обращений из U-ON в Google таблицы


2. В открывшемся окне указваем название проекта, например "APInita Google Sheets" и нажимаем кнопку "Create":


Передача обращений из U-ON в Google таблицы


3. Переходим в созданный проект (3):


Передача обращений из U-ON в Google таблицы


4. Нажимаем кнопку "ENABLE APIS AND SERVICES" (4):


Передача обращений из U-ON в Google таблицы


5. В строке поиска (5) вводим "sheets", жмем Enter и выбираем "Google Sheets API" (6):


Передача обращений из U-ON в Google таблицы


6. Нажимаем "Enable" (7):


Передача обращений из U-ON в Google таблицы


7. Переходим в раздел "OAuth consent screen" (8), выбираем "Extenral" (9) и жмем "Create":


Передача обращений из U-ON в Google таблицы


8. Укажите название приложения (10), например "APInita Google Sheets", Ваш Email (11):


Передача обращений из U-ON в Google таблицы


Промотайте вниз страницы и так же укажите Ваш Email (12) и нажмите кнопку "SAVE AND CONTINUE":


Передача обращений из U-ON в Google таблицы


9. Нажмите кнопку "ADD OR REMOVE SCOPES" (13), введите в строку поиска (14) "Google Sheets API", установите галочку у поля Google Sheets API (15) и сохраните:


Передача обращений из U-ON в Google таблицы


Далее внизу страницы нажимаем "SAVE AND CONTINUE" и переходим на следующий шаг.


10. Нажимаем кнопку "ADD USERS" (16), добавляем Ваш Email (17), нажимаем кнопку "ADD", а затем "SAVE AND CONTINUE":


Передача обращений из U-ON в Google таблицы


11. Далее переходим в раздел "Credentials" (18), нажимаем "CREATE CREDENTIALS" (19) и выбираем "OAuth client ID" (20):


Передача обращений из U-ON в Google таблицы


12. Выбираем тип приложения "Web application" (21), указываем имя, например "APInita" (22), позже так же добавим redirect URI (23 - вернемся к этой части дальше в инструкции) и нажимаем внизу кнопку "CREATE":


Передача обращений из U-ON в Google таблицы


13. Скопируйте полученные Client ID (24) и Secret ID (25):


Передача обращений из U-ON в Google таблицы


2. Создание Google-таблицы


Переходим в Гугл-таблицы https://docs.google.com/spreadsheets/u/0/ и создаем новую таблицу (1):


Передача обращений из U-ON в Google таблицы


Укажите название (2) и скопируйте из URL идентификатор таблицы (2), он понадобится позже:


Передача обращений из U-ON в Google таблицы


3. Настройка подключения в APInita


3.1. Создание подключения к Гугл-таблицам


Переходим в раздел "Подключения" (1) и нажимаем "+" (2):


Передача обращений из U-ON в Google таблицы


В типе подключения выбираем "OAuth 2.0" (4), вводим название подключения (3) и нажмимаем "Начать настройку":


Передача обращений из U-ON в Google таблицы


3.2. Настройка OAuth2 Google подключения


Далее заполняем поля:


Передача обращений из U-ON в Google таблицы


3.2.1. Cliend ID (1): значение, полученное в п. 1.13 (24);


3.2.2. Client Secret (1): значение, полученное в п. 1.13 (25);


3.2.3. URL авторизации (3):


https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&response_type=code&client_id={{ client_id }}&nonce={{ random() }}&redirect_uri=https://cabinet.apinita.ru/connections/17&scope=https://www.googleapis.com/auth/spreadsheets

Здесь "https://cabinet.apinita.ru/connections/17" заменить на значение из поля "URL для редиректа после авторизации" (16).


3.2.4. URL для получения Access Token (4):


https://oauth2.googleapis.com/token

3.2.5. Метод: POST. Тип данных: application/x-www-form-urlencoded


3.2.6.


grant_type: authorization_code
client_id: {{ client_id }}
client_secret: {{ client_secret }}
redirect_uri: https://apinita.ru/connections/17
code: {{ code }}

Здесь "https://cabinet.apinita.ru/connections/17" заменить на значение из поля "URL для редиректа после авторизации" (16).


3.2.7. Оставьте поля пустыми;


3.2.8. Оставьте поля пустыми;


3.2.9. Authorization: Bearer {{ access_token }}


3.2.10. Оставьте поля пустыми;


3.2.11. 401


3.2.12. URL для обновления токена: https://oauth2.googleapis.com/token


3.2.13. Метод: POST. Тип данных: application/x-www-form-urlencoded


3.2.14.


grant_type: refresh_token
client_id: {{ client_id }}
client_secret: {{ client_secret }}
refresh_token: {{ refresh_token }}

3.2.15. Оставьте поля пустыми;


3.2.16. Скопируйте значение данного поля и установите его в настройках Google в пункт 1.12 (23).


После ввода всех данных - нажмите кнопку "Сохранить и авторизоваться", перед Вами появится окно, выберите в нем свой аккаунт Google:


Передача обращений из U-ON в Google таблицы

Далее нажмите кнопку "Продолжить":


Передача обращений из U-ON в Google таблицы


Далее так же нажмите "Продолжить":


Передача обращений из U-ON в Google таблицы


Если все прошло корректно, Вы вернетесь на страницу подключения в APInita, а статус подключения будет "Подключено":


Передача обращений из U-ON в Google таблицы


Для справки: если Вам потребуется отменить подключение и/или переподключиться, сделать это можно по ссылке: https://myaccount.google.com/connections Для повторного подключения снова нажмите кнопку "Сохранить и авторизоваться" в подключении APInita.


4. Создание Webhook в U-ON


Перейдите в раздел "Интеграции" (1) -> "API / Webhooks" (2):


Передача обращений из U-ON в Google таблицы


Промотайте страницу вниз до блока WebHooks и добавьте новый вебхук: выберите тип "Изменене татуса в обращении" (3), укажите URL (4) (на данном этапе установите значение "https://wh.apinita.ru/", позже мы его заменим), метод (5) выберите POST и нажмите кнопку "Сохранить":


Передача обращений из U-ON в Google таблицы


5. Настройка сценария в APInita


5.1. Первый шаг: Webhook


Перейдите в раздел "Сценарии" и нажмите "+" для добавления нового сценария, добавьте первым шагом Webhook (1), скопируйте полученную ссылку (2) и установите ее в системе U-ON в пункте 4 (4).


Передача обращений из U-ON в Google таблицы


5.2. Второй шаг: HTTP


Вторым шагом добавляем HTTP-модуль и вводим следующие данные:


Передача обращений из U-ON в Google таблицы


URL запроса (3):


https://sheets.googleapis.com/v4/spreadsheets/1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2

Здесь вместо "1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2" указываем значение, полученное в пункте 2 (3).


Метод (4): GET. Тип данных: application/x-www-form-urlencoded


Поля запроса (5):


includeGridData: true
ranges: A:A

В подключении (6) укажите подключение, созданное в пункте 3.


5.3. Третий шаг: PHP


Следующим третьим шагом добавьте модуль PHP:


Передача обращений из U-ON в Google таблицы


В поле ввода PHP кода введите:


// преобразуем числовой статус в текстовый
$statuses = [
    0 => 'Без статуса',
    1 => 'Новый',
    2 => 'Думает по предложению',
    3 => 'Думает по встрече',
    4 => 'Приедет на встречу',
    5 => 'Принимает решение по оплате',
    6 => 'Лид → Заявка',
    7 => 'Отвалился',
    8 => 'Потом / в следующий раз',
];

// подготавливаем массив с данными для ответа
$existEntity = [
    'id' => null,
    'row' => 0,
    'col' => 0,
    'input_id' => $s1['body']['request_id'],
    'status' => $s1['body']['status_id_new'],
    'status_string' => isset($statuses[$s1['body']['status_id_new']]) ? $statuses[$s1['body']['status_id_new']] : $s1['body']['status_id_new'],
];

// ищем, есть ли такой id в таблице
$rows = $s2['body']['sheets']['0']['data']['0']['rowData'];
foreach ($rows as $row => $data) {
    $currentId = $data['values']['0']['formattedValue'];
    
    if ($currentId == $existEntity['input_id']) {
        $existEntity['id'] = $currentId;
        $existEntity['row'] = $row;

        break;
    }
}

return $existEntity;

Данный код выполняет две основные функции:


1. Сопоставляет ID статуса с его текстовым значением (например статус 3 - Думает по предложению);

2. Ищет ID обращения в первом столбце таблицы, если запись в таблице уже существует, записываем данные в массив для ответа.


5.4. Четвертый шаг: IF


Четвертым шагом создаем IF модуль, который будет срабатывать, если обращение в таблице найдено:


Передача обращений из U-ON в Google таблицы


В поле для условия пишем:


{{ s3.body.id is not null }}

5.5. Пятый шаг: IF


Пятым шагом создаем еще одно условие и переносим его на один уровень с четвертым шагом:


Передача обращений из U-ON в Google таблицы


В его условии пишем:


{{ s3.body.id is null }}

5.6. Шестой шаг: HTTP


Под четвертым шагом создаем шестой шаг - модуль HTTP:


Передача обращений из U-ON в Google таблицы


URL запроса (7):


https://sheets.googleapis.com/v4/spreadsheets/1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2:batchUpdate

Здесь вместо "1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2" указываем значение, полученное в пункте 2 (3).


Метод (8): POST. Тип данных: text/plain


Поля запроса (9):


{
    "requests": [{
        "updateCells": {
            "fields": "*",
            "start": { "columnIndex": {{ s3.body.col }}, "rowIndex": {{ s3.body.row }} },
            "rows": [{
                "values": [
                    {
                        "userEnteredValue": {
                            "numberValue": "{{ s1.body.request_id }}"
                        },
                    },
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s1.body.client.u_name }}"
                        }
                    },
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s1.body.client.u_surname }}"
                        }
                    },
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s1.body.client.u_sname }}"
                        }
                    },
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s1.body.client.u_phone_mobile }}"
                        }
                    },
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s1.body.client.u_email }}"
                        }
                    },
                ]
            }],
        }
    }, {
        "updateCells": {
            "fields": "*",
            "start": { "columnIndex": 6, "rowIndex": {{ s3.body.row }} },
            "rows": [{
                "values": [
                    {
                        "userEnteredValue": {
                            "stringValue":  "{{ s3.body.status_string }}"
                        }
                    }
                ]
            }],
        }
    }]
}

В качестве заголовка запроса (10) укажите:


Content-Type: application/json

Выберите подключение (11), созданное в пункте 3.


5.7. Седьмой шаг: HTTP


Под шагом 5 добавьте HTTP модуль:


Передача обращений из U-ON в Google таблицы


URL запроса (12):


https://sheets.googleapis.com/v4/spreadsheets/1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2/values/A1:append?valueInputOption=USER_ENTERED

Здесь вместо "1ZLuiQZFjZsdS1pyv4RTRsdfGasd45VO2" указываем значение, полученное в пункте 2 (3).


Метод (13): POST. Тип данных: text/plain


Поля запроса (14):


{
    "majorDimension": "ROWS",
    "values": [[
        "{{ s1.body.request_id }}",
        "{{ s1.body.client.u_name }}",
        "{{ s1.body.client.u_surname }}",
        "{{ s1.body.client.u_sname }}",
        "{{ s1.body.client.u_phone_mobile }}",
        "{{ s1.body.client.u_email }}",
        "{{ s3.body.status_string }}"
    ]]
}

Заголовки запроса (15):


Content-Type: application/json

Выберите подключение (16), созданное в пункте 3.


Включите сценарий (17) и протестируйте его работу, изменив статус обращения в системе U-ON:


Передача обращений из U-ON в Google таблицы

Попробуйте бесплатно

При регистрации Вы бесплатно получаете 14 дней и 1.000 запусков сценариев:

Нажимая кнопку «Регистрация» Вы принимаете условия лицензионного соглашения и даете согласие на обработку своих персональных данных. Если у Вас уже есть аккаунт, войдите в систему. Сайт защищен технологией reCAPTCHA и к нему применяются Google политика конфиденциальности и условия использования.
  • Техподдержка

    Ответим на Ваши вопросы, подскажем по настройкам модулей.

  • Доступные тарифы

    От 1000р. в месяц за полный функционал без ограничений.

  • Безопасность

    Сервера расположены на территории РФ, а все подключения дополнительно шифруются.