Tích hợp Google Sheets CRM cho VINIS AI Chat

Tự động đẩy thông tin khách hàng từ AI Chat vào Google Sheets — Không cần backend

Tổng quan hoạt động

Luồng dữ liệu:

Khách chat AI → AI thu thập info → Phát hiện email/SĐT → Tự động gửi lên Google Sheets → Đội sales nhận lead

Cột Google SheetDữ liệuCách thu thập
NgàyThời điểm submitTự động
Họ tênTên khách hàngTrích từ chat
Công tyTên công tyTrích từ chat
Chức vụVị tríTrích từ chat
Lĩnh vực hoạt độngNgành nghềTrích từ chat
Nhu cầu quan tâmCAD/CAE/CAM/PLM...Trích từ chat
Phần mềm đang dùngSW hiện tạiTrích từ chat
Khó khăn hiện tạiPain pointsTrích từ chat
Thời gian đầu tưTimelineTrích từ chat
EmailEmail liên hệDetect tự động
Số điện thoạiSĐT liên hệDetect tự động

Bước 1: Tạo Google Sheet

1Mở Google Sheets

Truy cập sheets.google.com và tạo sheet mới hoặc mở sheet "CRM tu web VINIS" đã có.

2Đặt header ở hàng 1

Copy chính xác các header sau vào ô A1 → K1:

Ngày | Họ tên | Công ty | Chức vụ | Lĩnh vực hoạt động | Nhu cầu quan tâm | Phần mềm hoặc giải pháp đang dùng | Khó khăn hiện tại | Thời gian dự kiến đầu tư | Email | Số điện thoại

(Mỗi cột phân cách bởi dấu |, mỗi giá trị vào 1 ô riêng)

Bước 2: Tạo Google Apps Script

3Mở Apps Script

Trong Google Sheet, vào menu: Extensions → Apps Script (Tiện ích mở rộng → Apps Script)

4Xóa code mẫu, dán code sau

Xóa hết nội dung trong file Code.gs, rồi dán đoạn code bên dưới:

// ===== VINIS CRM — Google Apps Script =====
// Nhận data từ AI Chat widget và ghi vào Google Sheet

function doPost(e) {
  try {
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var data = JSON.parse(e.postData.contents);

    // Ghi 1 dòng mới vào sheet
    sheet.appendRow([
      data.ngay || new Date().toLocaleString('vi-VN'),
      data.hoTen || '',
      data.congTy || '',
      data.chucVu || '',
      data.linhVuc || '',
      data.nhuCau || '',
      data.phanMem || '',
      data.khoKhan || '',
      data.thoiGian || '',
      data.email || '',
      data.sdt || ''
    ]);

    // Trả về thành công
    return ContentService
      .createTextOutput(JSON.stringify({ success: true, message: 'Lead saved' }))
      .setMimeType(ContentService.MimeType.JSON);

  } catch (error) {
    return ContentService
      .createTextOutput(JSON.stringify({ success: false, error: error.toString() }))
      .setMimeType(ContentService.MimeType.JSON);
  }
}

// Xử lý CORS preflight (OPTIONS request)
function doGet(e) {
  return ContentService
    .createTextOutput(JSON.stringify({ status: 'ok', message: 'VINIS CRM API ready' }))
    .setMimeType(ContentService.MimeType.JSON);
}
5Lưu project

Nhấn Ctrl+S hoặc icon Save. Đặt tên project: VINIS CRM

Bước 3: Deploy Web App

6Deploy lần đầu
  1. Click nút Deploy → New deployment (Triển khai → Triển khai mới)
  2. Click icon ⚙ Settings (bánh răng) bên cạnh "Select type" → chọn Web app
  3. Cấu hình:
    • Description: VINIS CRM v1
    • Execute as: Me (email của bạn)
    • Who has access: AnyoneQUAN TRỌNG!
  4. Click Deploy
  5. Lần đầu sẽ yêu cầu Authorize → click "Review permissions" → chọn tài khoản Google → click "Allow"
7Copy Web App URL

Sau khi deploy xong, bạn sẽ thấy URL dạng:

https://script.google.com/macros/s/AKfycbx.........../exec

Copy URL này — đây là endpoint để AI Chat gửi data lên.

Lưu ý: URL này phải giữ bí mật. Không share công khai. Chỉ dùng trong code AI Chat.

Bước 4: Cấu hình trong AI Chat

8Mở file ai-chat.js

Tìm dòng sau trong file seo/shared/ai-chat.js:

const GOOGLE_SHEET_URL = ''; // ← DÁN URL GOOGLE APPS SCRIPT VÀO ĐÂY

Thay bằng URL bạn vừa copy ở Bước 7:

const GOOGLE_SHEET_URL = 'https://script.google.com/macros/s/AKfycbx........./exec';
Xong! Từ giờ khi khách hàng chat và cung cấp email hoặc số điện thoại, hệ thống sẽ tự động:
  1. Trích xuất thông tin từ cuộc hội thoại
  2. Gửi lên Google Sheet
  3. Hiện thông báo nhỏ "Đã lưu thông tin" trong chat

Cách hệ thống detect thông tin

Email

Regex: /[\w.-]+@[\w.-]+\.\w+/

Ví dụ: nguyen@company.com

Số điện thoại

Regex: /0\d{9,10}/

Ví dụ: 0912345678

Nhu cầu

Keywords: CAD, CAE, CAM, PLM, CATIA 3DEXPERIENCE, SIMULIA, DELMIA, ENOVIA, In 3D...

Trigger

Tự động gửi khi phát hiện email HOẶC SĐT trong tin nhắn user. Chỉ gửi 1 lần/phiên chat.

Test thủ công

TTest bằng trình duyệt

Mở Console (F12) và chạy lệnh sau để test:

// Thay URL_CUA_BAN bằng URL Apps Script thật
fetch('URL_CUA_BAN', {
  method: 'POST',
  headers: { 'Content-Type': 'text/plain' },
  body: JSON.stringify({
    ngay: new Date().toLocaleString('vi-VN'),
    hoTen: 'Test User',
    congTy: 'Test Corp',
    chucVu: 'Engineer',
    linhVuc: 'Ô tô',
    nhuCau: 'CAE mô phỏng',
    phanMem: 'SolidWorks',
    khoKhan: 'Mô phỏng chậm',
    thoiGian: 'Q3 2025',
    email: 'test@example.com',
    sdt: '0912345678'
  })
}).then(r => r.json()).then(d => console.log('Result:', d));

Nếu thành công → check Google Sheet sẽ thấy dòng mới.

Cập nhật Apps Script (khi cần)

!Lưu ý khi sửa code

Mỗi khi sửa code trong Apps Script, bạn cần deploy lại:

  1. Deploy → Manage deployments
  2. Click icon ✏️ Edit (bút chì)
  3. Version, chọn New version
  4. Click Deploy

URL không đổi, chỉ cần deploy version mới.

Xử lý lỗi thường gặp

LỗiNguyên nhânCách fix
CORS errorContent-Type saiDùng text/plain thay vì application/json
403 Forbidden"Who has access" chưa set AnyoneVào Deploy → Edit → set "Anyone"
404 Not FoundURL sai hoặc chưa deployCheck lại URL, deploy lại
Data không vào sheetChưa AuthorizeChạy doPost thủ công 1 lần trong editor
Dữ liệu rỗngpostData parse lỗiĐảm bảo body là JSON string


Hỗ trợ: Liên hệ VINIS — ĐT: 0967 667 433 | Email: vinis.p_banhang@vinis.vn