KWIGA Palīdzības centrs Pakalpojumi, integrācijas, API, iestatījumi Pakalpojumi Datu eksportēšana uz Google Sheets

Datu eksportēšana uz Google Sheets

Raksti:

Mēs parādīsim, kā iestatīt automātisku datu eksportēšanu no Kwiga uz Google Sheets.


Jūs varat iestatīt datu eksportu dažādiem notikumiem, izmantojot automatizāciju (kā notikumu var norādīt kontakta pievienošanu, taga pievienošanu, veiksmīgu vai neveiksmīgu pirkumu u. c.; pilns notikumu saraksts ir pieejams rakstā).

Turklāt, izmantojot logrīkus, varat izmantot iespēju nosūtīt webhook; darbplūsma paliek tāda pati.

Galvenie soļi:

  1. Izveidojiet failu un pievienojiet tajā skriptu

  2. Izveidojiet tīmekļa lietotni un iegūstiet saiti webhook nosūtīšanai

  3. Iestatiet webhook nosūtīšanu, izmantojot automatizāciju Kwiga vai formas iesniegšanu logrīkā.

Viss process ir parādīts video un neprasa programmēšanas zināšanas. Vienkārši izpildiet norādītās darbības, un, ja kaut kas neizdodas, sazinieties ar atbalstu.

 

1. solis: izveidojiet failu, uz kuru tiks nosūtīti dati no Kwiga

Atveriet Google Sheets un izveidojiet jaunu failu, pēc tam atveriet skriptu redaktoru.

Atvērsies jauns logs, un jums tā redaktorā jāielīmē skripts. Jūs varat lejupielādēt skriptu izmantojot saiti (vai nokopēt tekstu raksta apakšā). Jums jāizdzēš viss teksts, kas jau ir redaktorā.

Gala rezultāts:

2. solis: izveidojiet tīmekļa lietotni un iegūstiet saiti webhook nosūtīšanai

Tajā pašā skriptu redaktorā atrodiet pogu Deploy un atlasiet New deployment

Atlasiet Web app kā tipu un nolaižamajā sarakstā Who has access iestatiet Everyone, pēc tam noklikšķiniet uz Deploy.

Rezultātā jūs iegūsiet Web App URL, kas pēc tam jāpievieno Kwiga.

 

3. solis: iestatiet datu nosūtīšanu Kwiga

Augšējā izvēlnē noklikšķiniet uz pogas All solutions un atlasiet Automation. Izveidojiet jaunu trigeri un izvēlieties notikumu, kas palaidīs automatizāciju. Tas var būt kontakta pievienošana, taga pievienošana, maksājums vai jebkurš cits notikums.

Pēc tam ritiniet uz leju un darbībās atlasiet Webhook - Send data. Saites laukā norādiet Web App URL, pieprasījuma tipu POST un atlasiet laukus, kas jāeksportē uz tabulu.

Saglabājiet to, un visi soļi būs pabeigti.

 

Alternatīvi, varat iestatīt webhook nosūtīšanu no logrīka; tas ir pieejams, izmantojot elementu Form. Atzīmējiet opciju Additionally send to a third-party service, pēc tam atvērtajā formā pievienojiet saiti, pieprasījuma tipu POST un atlasiet nosūtāmos parametrus. Šajā sarakstā būs pieejami tikai tie parametri, kas ir formā (šajā logrīkā).

 

Kā darbojas Google Sheets skripts tīmekļa āķiem

  • Pēc pirmās tīmekļa āķa pieprasījuma tabulas virsraksti tiek automātiski izveidoti, pamatojoties uz ienākošo datu atslēgām
  • Ja tabulā jau ir virsraksti un nepieciešams sākt saņemt jaunus datu laukus, pievienojiet šos virsrakstus tabulai manuāli
  • Virsrakstus var mainīt vietām tabulā - skripts automātiski noteiks to pozīcijas
  • Pēc noklusējuma skripts pievieno jaunus ierakstus katru reizi, kad tiek saņemts tīmekļa āķis
  • Ja norādīt laukus keyColumns, skripts atjauninās esošos ierakstus vai pievienos jaunus, ja netiks atrasta sakritība
  • ⚠️ Svarīgi: Pēc skripta izmaiņām nepieciešams veikt jaunu izvietošanu Google Apps Script un atjaunināt tīmekļa āķa saiti

Tabulas lapas izvēle:

  • Pēc noklusējuma tiek izmantota aktīvā lapa
  • Var pārrakstīt caur tīmekļa āķa parametriem:
  • "sheet_name": "Lapas nosaukums" - lai izvēlētos lapu pēc nosaukuma
  • "sheet_index": 2 - lai izvēlētos lapu pēc numura (sākot no 1)
// ============================================================
// SKRIPTA IESTATĪJUMI
// ============================================================

// Dublikātu pārbaude - norādiet laukus esošo ierakstu meklēšanai
// Lietošanas piemēri:
// var keyColumns = ["email"];           - pārbaude pēc email
// var keyColumns = ["order_id"];        - pārbaude pēc pasūtījuma ID
// var keyColumns = ["email", "order_id"];  - pārbaude pēc vairākiem laukiem
var keyColumns = []; // Dublikātu pārbaude atspējota

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

// Funkcija atbildes nosūtīšanai
function sendResponse(success, message) {
    var response = {
        "status": success ? "success" : "error",
        "message": message
    };
    return ContentService.createTextOutput(JSON.stringify(response))
        .setMimeType(ContentService.MimeType.JSON);
}

// Mērķa lapas iegūšana datu ierakstīšanai
function getTargetSheet(hook_data) {
    var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();

    // Pārbaudām, vai norādīts lapas nosaukums
    if (hook_data && hook_data.sheet_name) {
        try {
            var sheet = spreadsheet.getSheetByName(hook_data.sheet_name);
            if (sheet) {
                return sheet;
            }
        } catch (error) {
            // Lapa nav atrasta
        }
    }

    // Pārbaudām, vai norādīts lapas numurs
    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; // Konvertējam uz indeksu no 0
            if (index >= 0 && index < sheets.length) {
                return sheets[index];
            }
        } catch (error) {
            // Nepareizs lapas indekss
        }
    }

    // Pēc noklusējuma izmantojam aktīvo lapu
    return SpreadsheetApp.getActiveSheet();
}

// Izveido virsrakstus tabulā, pamatojoties uz nodotajiem datiem
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;
}

// Ienākošā tīmekļa āķa apstrāde
function doPost(e) {
    var hook_load = null;

    // Pārbaudām POST datu esamību
    if (!e || !e.postData || !e.postData.contents) {
        return sendResponse(false, "Nav datu apstrādei");
    }

    // Parsējam JSON datus
    try {
        hook_load = JSON.parse(e.postData.contents);
    } catch (error) {
        return sendResponse(false, "Kļūda JSON datu parsēšanā");
    }

    // Saņemto datu validācija
    if (!hook_load || typeof hook_load !== 'object' || Object.keys(hook_load).length === 0) {
        return sendResponse(false, "Saņemti nekorekti vai tukši dati");
    }

    try {
        // Iegūstam mērķa lapu
        var sheet = getTargetSheet(hook_load);
        if (!sheet) {
            return sendResponse(false, "Neizdevās atrast norādīto lapu");
        }

        // Virsrakstu izveide, ja tabula ir tukša
        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];
        }

        // Dublikātu pārbaude
        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; // virsrakstu uzskaite
                    break;
                }
            }
        }

        // Datu sagatavošana ierakstīšanai
        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];
            }
        }

        // Datu saglabāšana tabulā
        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, "Dati veiksmīgi saglabāti");

    } catch (error) {
        return sendResponse(false, "Kļūda datu saglabāšanā: " + error.message);
    }
}