KWIGA súgóközpont Szolgáltatások, integrációk, API, Beállítások Szolgáltatások Adatok exportálása a Google Táblázatokba

Adatok exportálása a Google Táblázatokba

Cikkek:

Megmutatjuk, hogyan állíthat be automatikus adatexportot a Kwigából a Google Táblázatokba.


Különböző eseményekhez beállíthat adatexportot automatizálással (eseményként megadható például kapcsolat hozzáadása, címke hozzáadása, sikeres vagy sikertelen vásárlás stb.; az események teljes listája a cikkben érhető el).

Emellett webhook küldésének lehetőségét is használhatja widgetek használatakor; a folyamat ugyanaz marad.

Fő lépések:

  1. Hozzon létre egy fájlt, és adja hozzá a szkriptet

  2. Hozzon létre egy webalkalmazást, és szerezze meg a webhook küldéséhez szükséges hivatkozást

  3. Állítsa be a webhook küldését automatizálással a Kwigában, vagy űrlapbeküldéssel a widgetben.

A teljes folyamat a videóban látható, és nem igényel programozási ismereteket. Csak kövesse a megadott lépéseket, és ha valami nem működik, forduljon az ügyfélszolgálathoz.

 

1. lépés: Hozzon létre egy fájlt, ahová a Kwigából érkező adatok lesznek elküldve

Nyissa meg a Google Sheets szolgáltatást, és hozzon létre egy új fájlt, majd nyissa meg a szkriptszerkesztőt.

Egy új ablak nyílik meg, és be kell illesztenie a szkriptet annak szerkesztőjébe. A szkriptet a hivatkozáson keresztül töltheti le (vagy kimásolhatja a szöveget a cikk alján). Törölnie kell az összes szöveget, amely már a szerkesztőben van.

Végeredmény:

2. lépés: Hozzon létre egy webalkalmazást, és szerezze meg a webhook küldéséhez szükséges hivatkozást

Ugyanabban a szkriptszerkesztőben keresse meg a Deploy gombot, és válassza a New deployment lehetőséget

Válassza a Web app típust, majd a Who has access legördülő listában állítsa Everyone értékre, ezután kattintson a Deploy gombra.

Ennek eredményeként megkapja a Web App URL-t, amelyet ezután hozzá kell adnia a Kwigában.

 

3. lépés: Adatküldés beállítása a Kwigában

Kattintson a felső menüben az All solutions gombra, és válassza az Automation lehetőséget. Hozzon létre egy új triggert, és válassza ki azt az eseményt, amely elindítja az automatizálást. Ez lehet kapcsolat hozzáadása, címke hozzáadása, fizetés vagy bármely más esemény.

Ezután görgessen lejjebb, és a műveleteknél válassza a Webhook - Send data lehetőséget. A hivatkozás mezőben adja meg a Web App URL-t, a kérés típusát POST értékre, és válassza ki azokat a mezőket, amelyeket exportálni kell a táblázatba.

Mentse el, és minden lépés befejeződött.

 

Alternatív megoldásként beállíthat webhook küldést a widgetből is; ez a Form elem használatakor érhető el. Jelölje be az Additionally send to a third-party service lehetőséget, majd a megnyíló űrlapon adja hozzá a hivatkozást, a kérés típusát POST értékre, és válassza ki a küldendő paramétereket. Ebben a listában csak azok a paraméterek lesznek elérhetők, amelyek szerepelnek az űrlapon (ebben a widgetben).

 

Hogyan működik a Google Sheets szkript webhookokhoz

  • Az első webhook híváskor a táblázat fejlécei automatikusan létrejönnek a beérkező adatok kulcsai alapján
  • Ha a táblázatban már vannak fejlécek, és új adatmezőket szeretnél fogadni, add hozzá ezeket a fejléceket kézzel a táblázathoz
  • A fejlécek sorrendje a táblázatban módosítható - a szkript automatikusan meghatározza a pozíciójukat
  • Alapértelmezés szerint a szkript minden webhook érkezésekor új rekordokat ad hozzá
  • Ha megadod a keyColumns mezőket, a szkript frissíti a meglévő rekordokat, vagy újakat ad hozzá, ha nem talál egyezést
  • ⚠️ Fontos: A szkript módosítása után új telepítést kell létrehozni a Google Apps Scriptben, és frissíteni kell a webhook hivatkozását

Táblázatlap kiválasztása:

  • Alapértelmezés szerint az aktív lap van használatban
  • Felülbírálható a webhook paramétereivel:
  • "sheet_name": "A lap neve" - lap kiválasztása név alapján
  • "sheet_index": 2 - a lap szám szerinti kiválasztásához (1-től kezdve)
// ============================================================
// SZKRIPTBEÁLLÍTÁSOK
// ============================================================

// Duplikátumellenőrzés - add meg a meglévő rekordok kereséséhez használt mezőket
// Használati példák:
// var keyColumns = ["email"];           - ellenőrzés email alapján
// var keyColumns = ["order_id"];        - ellenőrzés rendelésazonosító alapján
// var keyColumns = ["email", "order_id"];  - ellenőrzés több mező alapján
var keyColumns = []; // A duplikátumellenőrzés ki van kapcsolva

// ============================================================

// Függvény a válasz elküldéséhez
function sendResponse(success, message) {
    var response = {
        "status": success ? "success" : "error",
        "message": message
    };
    return ContentService.createTextOutput(JSON.stringify(response))
        .setMimeType(ContentService.MimeType.JSON);
}

// A célmunkalap lekérése az adatok rögzítéséhez
function getTargetSheet(hook_data) {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

    // Ellenőrizzük, hogy meg van-e adva a lap neve
    if (hook_data && hook_data.sheet_name) {
        try {
            var sheet = spreadsheet.getSheetByName(hook_data.sheet_name);
            if (sheet) {
                return sheet;
            }
        } catch (error) {
            // A lap nem található
        }
    }

    // Ellenőrizzük, hogy meg van-e adva a lapszám
    if (hook_data && hook_data.sheet_index && !isNaN(hook_data.sheet_index)) {
        try {
            var sheets = spreadsheet.getSheets();
            var index = parseInt(hook_data.sheet_index) - 1; // Átalakítjuk 0-tól kezdődő indexszé
            if (index >= 0 && index < sheets.length) {
                return sheets[index];
            }
        } catch (error) {
            // Érvénytelen lapindex
        }
    }

    // Alapértelmezés szerint az aktív lapot használjuk
    return SpreadsheetApp.getActiveSheet();
}

// A táblázat fejléceit a megadott adatok alapján hozza létre
function populateHeaders(hook_data, sheet) {
    if (!hook_data || typeof hook_data !== 'object') {
        return false;
    }

    if (!sheet) {
        sheet = getTargetSheet(hook_data);
    }
    var last_row = Math.max(sheet.getLastRow(), 1);
    sheet.insertRowAfter(last_row);

    var headers_row = ['timestamp'];
    var hook_data_keys = Object.keys(hook_data);

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

    sheet.appendRow(headers_row);
    SpreadsheetApp.flush();
    return true;
}

// Bejövő webhook feldolgozása
function doPost(e) {
    var hook_load = null;

    // Ellenőrizzük a POST adatok meglétét
    if (!e || !e.postData || !e.postData.contents) {
        return sendResponse(false, "Nincsenek feldolgozható adatok");
    }

    // JSON adatok feldolgozása
    try {
        hook_load = JSON.parse(e.postData.contents);
    } catch (error) {
        return sendResponse(false, "Hiba a JSON adatok feldolgozásakor");
    }

    // A kapott adatok érvényesítése
    if (!hook_load || typeof hook_load !== 'object' || Object.keys(hook_load).length === 0) {
        return sendResponse(false, "Érvénytelen vagy üres adatok érkeztek");
    }

    try {
        // A célmunkalap lekérése
        var sheet = getTargetSheet(hook_load);
        if (!sheet) {
            return sendResponse(false, "A megadott lap nem található");
        }

        // Fejlécek létrehozása, ha a táblázat üres
        if (sheet.getLastColumn() === 0) {
            populateHeaders(hook_load, sheet);
        }

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

        if (headers.length === 0 || headers[0] === "") {
            populateHeaders(hook_load, sheet);
            headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
        }

        // Duplikátumellenőrzés
        var data = [];
        var targetRow = -1;
        var numRows = sheet.getLastRow() - 1;

        if (keyColumns.length > 0 && numRows > 0) {
            data = sheet.getRange(2, 1, numRows, sheet.getLastColumn()).getValues();

            for (var r = 0; r < data.length; r++) {
                var row = data[r];
                var match = true;

                for (var k = 0; k < keyColumns.length; k++) {
                    var key = keyColumns[k];
                    var idx = headers.indexOf(key);
                    if (idx === -1 || row[idx] != hook_load[key]) {
                        match = false;
                        break;
                    }
                }

                if (match) {
                    targetRow = r + 2; // fejlécek figyelembevétele
                    break;
                }
            }
        }

        // Adatok előkészítése rögzítéshez
        var new_sheet_row = new Array(headers.length).fill('');
        for (var h = 0; h < headers.length; h++) {
            var key = headers[h];
            if (key === 'timestamp') {
                new_sheet_row[h] = new Date();
            } else if (hook_load.hasOwnProperty(key)) {
                new_sheet_row[h] = hook_load[key];
            }
        }

        // Adatok mentése a táblázatba
        if (targetRow > -1) {
            sheet.getRange(targetRow, 1, 1, new_sheet_row.length).setValues([new_sheet_row]);
        } else {
            sheet.appendRow(new_sheet_row);
        }

        SpreadsheetApp.flush();

        return sendResponse(true, "Az adatok mentése sikeres");

    } catch (error) {
        return sendResponse(false, "Hiba az adatok mentésekor: " + error.message);
    }
}