KWIGA справочный центр Сервисы, интеграции, API, Настройки проекта Подключение сервисов Экспорт данных в Google Sheets

Экспорт данных в Google Sheets

Статьи:

Покажем, как настроить автоматический экспорт данных из Kwiga в Google Sheets (Таблицу Google) 


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

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

Основные шаги:

  1. Создать файл и добавить в него скрипт

  2. Создать webapp и получить ссылку для отправки вебхука

  3. Настроить отправку вебхука используя автоматизацию на Kwiga или же отправку форму в виджете. 

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

 

Шаг 1: Создать файл, куда будут передаваться данные из Kwiga

Откройте Google Sheets и создайте новый файл и откройте редактор скриптов. 

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

Итоговый вид: 

Шаг 2: Создать webapp и получить ссылку для отправки вебхука

В том же редакторе скрипта найдите кнопку Deploy и выберите New deployment

Укажите Web app в типе, а в дропдауне У кого есть доступ установите Все, и нажмите Deploy.

В результате Вы получите Web App URL, которую и нужно будет добавить на Kwiga.

 

Шаг 3: Настройка отправки данных на Kwiga

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

После этого опуститесь ниже и выберите в действиях Вебхук - Отправка данных. В ссылке укажите  Web App URL, тип запроса POST,  и выберите поля, которые должны быть экспортированы в таблицу. 

Сохраните и все шаги выполнены. 

 

Альтернативно, Вы можете настроить отправку вебхука из виджета, это доступно при использовании элемента Форма. Установите отметку Дополнительно передавать в сторонний сервис, в открывшейся форме добавьте ссылку, тип запроса POST,   и выберите параметры для передачи. В этом списке будут доступны только те параметры, которые есть в форме (этом виджете). 

 

var mock_data = {
    "first_name": "Test",
    "last_name": "Name",
    "name": "Test Name",
    "email": "kwiga-contact@kwiga.com",
    "phone": "+380931112233",
    "country": "Ukraine",
    "city": null,
    "utm_source": "",
    "utm_campaign": "",
    "utm_medium": "",
    "utm_term": "",
    "utm_content": "",
    "description": "Added Test Name"
}

// Receive Kwiga Webhooks in Google Sheets /
// Below function could be ran to populate the header columns
function populateHeaders(hook_data) {
    if(hook_data === undefined) {
        hook_data = mock_data
    }
    var sheet = SpreadsheetApp.getActiveSheet()
    var last_row = Math.max(sheet.getLastRow(),1)
    sheet.insertRowAfter(last_row)
    var headers_row = []
    headers_row.push('timestamp');

    var hook_data_keys = Object.keys(hook_data)

    for (i = 0; i < hook_data_keys.length; i++) {
        headers_row.push(hook_data_keys[i])
    }

    sheet.appendRow(headers_row)
    SpreadsheetApp.flush()
}

function doPost(e) {
    var sheet = SpreadsheetApp.getActiveSheet()
    var hook_load = null

    try {
        hook_load = JSON.parse(e.postData.contents)
        //hook_load = mock_data
    } catch (error) {
        sheet.appendRow(["error","There was an error in this data"])
        return
    }

    var hook_load_keys = Object.keys(hook_load)
    var new_sheet_row = []

    if (sheet.getLastColumn() == 0) {
        populateHeaders(hook_load)
    }

    var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]

    headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
    for (h in headers){
        for (i = 0; i < hook_load_keys.length; i++) {
            var key = hook_load_keys[i]
            var fieldValue = hook_load[key]

            if (headers[h] == key) {
                new_sheet_row[h] = fieldValue
            } else if (headers[h] == 'timestamp') {
                new_sheet_row[h] = new Date()
            }
        }
    }
    sheet.appendRow(new_sheet_row)
    SpreadsheetApp.flush()
}