Tự động đẩy thông tin khách hàng từ AI Chat vào Google Sheets — Không cần backend
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 Sheet | Dữ liệu | Cách thu thập |
|---|---|---|
| Ngày | Thời điểm submit | Tự động |
| Họ tên | Tên khách hàng | Trích từ chat |
| Công ty | Tên công ty | Trích từ chat |
| Chức vụ | Vị trí | Trích từ chat |
| Lĩnh vực hoạt động | Ngành nghề | Trích từ chat |
| Nhu cầu quan tâm | CAD/CAE/CAM/PLM... | Trích từ chat |
| Phần mềm đang dùng | SW hiện tại | Trích từ chat |
| Khó khăn hiện tại | Pain points | Trích từ chat |
| Thời gian đầu tư | Timeline | Trích từ chat |
| Email liên hệ | Detect tự động | |
| Số điện thoại | SĐT liên hệ | Detect tự động |
Truy cập sheets.google.com và tạo sheet mới hoặc mở sheet "CRM tu web VINIS" đã có.
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)
Trong Google Sheet, vào menu: Extensions → Apps Script (Tiện ích mở rộng → Apps Script)
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);
}
Nhấn Ctrl+S hoặc icon Save. Đặt tên project: VINIS CRM
VINIS CRM v1Me (email của bạn)Anyone ← QUAN TRỌNG!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.
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';
Regex: /[\w.-]+@[\w.-]+\.\w+/
Ví dụ: nguyen@company.com
Regex: /0\d{9,10}/
Ví dụ: 0912345678
Keywords: CAD, CAE, CAM, PLM, CATIA 3DEXPERIENCE, SIMULIA, DELMIA, ENOVIA, In 3D...
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.
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.
Mỗi khi sửa code trong Apps Script, bạn cần deploy lại:
URL không đổi, chỉ cần deploy version mới.
| Lỗi | Nguyên nhân | Cách fix |
|---|---|---|
| CORS error | Content-Type sai | Dùng text/plain thay vì application/json |
| 403 Forbidden | "Who has access" chưa set Anyone | Vào Deploy → Edit → set "Anyone" |
| 404 Not Found | URL sai hoặc chưa deploy | Check lại URL, deploy lại |
| Data không vào sheet | Chưa Authorize | Chạy doPost thủ công 1 lần trong editor |
| Dữ liệu rỗng | postData parse lỗi | Đảm bảo body là JSON string |