Mục lục

[Hướng dẫn] Đồng bộ dữ liệu điền form trên website lên Google Sheet 2024

Đồng bộ dữ liệu điền form trên website lên Google Sheet – Dù bạn đang sở hữu một website hay Landing page, chắc chắn bạn luôn có các CTA hay các form để khách hàng điền thông tin. Từ những thông tin này sẽ là data quan trọng để doanh nghiệp/cửa hàng tư vấn, hỗ trợ, upsale cho khách hàng.

Vấn đề ở đây là, DỮ LIỆU CỦA KHÁCH HÀNG SAU KHI ĐIỀN FORM SẼ ĐƯỢC GỬI VỀ ĐÂU?

Để mang đến sự tiện lợi và quen thuộc cho khách hàng, ATPWEB sẽ hướng dẫn cách đồng bộ dữ liệu điền form trên website lên Google Sheet.

Liên hệ Fanpage ATPWEB

Các bước thực hiện đồng bộ dữ liệu điền form trên website lên Google Sheet

Để thực hiện đồng bộ dữ liệu điền form trên website lên Google Sheet bạn cần thực hiện 2 bước:

  1. Thiết lập webhook với Apps Script trên Google Sheet
  2. Dán URL webhook trên vào Form trên Elementor

#Script webhook

// Change to true to enable email notifications
var emailNotification = true;
var emailAddress = "Đổi_thành_Email_của_bạn";



// DO NOT EDIT THESE NEXT PARAMS
var isNewSheet = false;
var recivedData = [];

/**
 * this is a function that fires when the webapp receives a GET request
 * Not used but required.
 */
function doGet( e ) {
    return HtmlService.createHtmlOutput( "Yepp this is the webhook URL, request received" );
}

// Webhook Receiver - triggered with form webhook to pusblished App URL.
function doPost( e ) {
    var params = JSON.stringify(e.parameter);
    params = JSON.parse(params);
    insertToSheet(params);

    // HTTP Response
    return HtmlService.createHtmlOutput( "post request received" );
}

// Flattens a nested object for easier use with a spreadsheet
function flattenObject( ob ) {
    var toReturn = {};
    for ( var i in ob ) {
        if ( ! ob.hasOwnProperty( i ) ) continue;
        if ( ( typeof ob[ i ] ) == 'object' ) {
            var flatObject = flattenObject( ob[ i ] );
            for ( var x in flatObject ) {
                if ( ! flatObject.hasOwnProperty( x ) ) continue;
                toReturn[ i + '.' + x ] = flatObject[ x ];
            }
        } else {
            toReturn[ i ] = ob[ i ];
        }
    }
    return toReturn;
}

// normalize headers
function getHeaders( formSheet, keys ) {
    var headers = [];
  
    // retrieve existing headers
    if ( ! isNewSheet ) {
      headers = formSheet.getRange( 1, 1, 1, formSheet.getLastColumn() ).getValues()[0];
    }

    // add any additional headers
    var newHeaders = [];
    newHeaders = keys.filter( function( k ) {
        return headers.indexOf( k ) > -1 ? false : k;
    } );

    newHeaders.forEach( function( h ) {
        headers.push( h );
    } );
    return headers;
}

// normalize values
function getValues( headers, flat ) {
    var values = [];
    // push values based on headers
    headers.forEach( function( h ){
        values.push( flat[ h ] );
    });
    return values;
}

// Insert headers
function setHeaders( sheet, values ) {
    var headerRow = sheet.getRange( 1, 1, 1, values.length )
    headerRow.setValues( [ values ] );
    headerRow.setFontWeight( "bold" ).setHorizontalAlignment( "center" );
}

// Insert Data into Sheet
function setValues( sheet, values ) {
    var lastRow = Math.max( sheet.getLastRow(),1 );
    sheet.insertRowAfter( lastRow );
    sheet.getRange( lastRow + 1, 1, 1, values.length ).setValues( [ values ] ).setFontWeight( "normal" ).setHorizontalAlignment( "center" );
}

// Find or create sheet for form
function getFormSheet( formName ) {
    var formSheet;
    var activeSheet = SpreadsheetApp.getActiveSpreadsheet();

    // create sheet if needed
    if ( activeSheet.getSheetByName( formName ) == null ) {
      formSheet = activeSheet.insertSheet();
      formSheet.setName( formName );
      isNewSheet = true;
    }
    return activeSheet.getSheetByName( formName );
}


// magic function where it all happens
function insertToSheet( data ){
    var flat = flattenObject( data );
    var keys = Object.keys( flat );
    var formName = data["form_name"];
    var formSheet = getFormSheet( formName );
    var headers = getHeaders( formSheet, keys );
    var values = getValues( headers, flat );
    setHeaders( formSheet, headers );
    setValues( formSheet, values );
    
    if ( emailNotification ) {
        sendNotification( data, getSeetURL() );
    }
}

function getSeetURL() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = spreadsheet.getActiveSheet();
  return spreadsheet.getUrl();
}

function sendNotification( data, url ) {
    var subject = "A new Elementor Pro Froms subbmition has been inserted to your sheet";
  var message = "A new subbmition has been recived via " + data['form_name'] + " form and inserted into your Google sheet at: " + url;
    MailApp.sendEmail( emailAddress, subject, message, {
        name: 'Automatic Emailer Script'
    } );
}

Bước 1: Sử dụng Apps Script trên Google Sheet

Vào Google Sheet -> Chọn Tiện ích mở rộng -> chọn Apps script

Chọn Apps Script

Copy và dán script webhook ở trên vào -> nhấn Triển khai ->  Tùy chọn triển khai mới

Dán Script và triển khai
Dán Script và triển khai

Chọn loại Ứng dụng Web -> Chọn các thông tin như ảnh bên dưới -> Triển khai

Nhập thông tin

#Lưu ý: Ở phần Người có quyền truy cập bạn vui lòng chọn Bất kỳ ai

Copy URL Webhook ->Xong

Copy URL

Bước 2: Webhook trong Elementor

Vào Form Elementor -> Chọn webhook

Chọn webhook trong elementor
Chọn webhook trong elementor

Dán URL đã copy ở trên vào -> nhấn cập nhật

Dán URL webhook đã copy vào
Dán URL webhook đã copy vào

Các lưu ý trong nội dung script:

– Điều chỉnh dòng bên dưới thành tiêu đề

var subject -> Tiêu đề của thông báo tới gmail
var message -> Nội dung trong form
function sendNotification( data, url ) {
var subject = "Thông tin khách hàng mới từ website";
var message = "Có thông tin form mới tại " + data['form_name'] + " Được cập nhật vào google sheet : " + url;
MailApp.sendEmail( emailAddress, subject, message, {
name: 'Automatic Emailer Script'
} );
}

– Đổi thành Email của bạn và bật noti nếu cần

var emailNotification = true;
var emailAddress = "your_adress@gmail.com";

Tổng kết

Như vậy là chỉ với vài bước đơn giản mà bạn đã có thể đồng bộ dữ liệu điền form trên website lên Google Sheet. Từ giờ bạn chỉ cần thực hiện kéo các phễu về landing page/website và khách hàng điền đơn, click CTA… Sau đó quản trị lead và data sẽ được tự động đưa về Google Sheet và thông báo qua email của bạn.

Việc quản lý dữ liệu bây giờ là cực kỳ dễ dàng và quen thuộc rồi đúng không nào. Chúc các bạn thành công!

Đừng quên liên hệ ATPWEB để thiết kế website hoặc thiết kế landing page nhé.

 

ATPWEB – XÂY DỰNG NGÔI NHÀ ONLINE
Liên hệ:
Đánh giá bài viết post

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

LIÊN HỆ TƯ VẤN

Thiết Kế Web
BLOG
Đăng ký tư vấn
Thiết kế website
Đồng hành cùng ATP WEB

Đăng ký tư vấn Thiết kế website