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()
}