Google Apps Script là gì? Tự động hóa công việc không cần server

Mỗi sáng mở mắt ra, bạn mất 15 phút mở Google Sheets, copy từng dòng dữ liệu khách hàng mới, soạn email báo giá theo mẫu rồi gửi đi. Chiều muộn, bạn lại lặp lại quy trình đó để tổng hợp báo cáo và ném vào nhóm chat. Đây là công việc thuần tính chất lặp đi lặp lại mà đáng lẽ ra máy móc phải làm thay bạn từ nhiều năm trước.

Google Apps Script là gì?

Google Apps Script (GAS) là nền tảng điện toán đám mây cho phép bạn viết mã JavaScript để tự động hóa, mở rộng và kết nối các dịch vụ trong hệ sinh thái Google Workspace (Gmail, Sheets, Docs, Drive, Calendar, Forms) cũng như gọi API bên thứ ba.

Nếu ví hệ sinh thái Google Workspace như một dàn nhạc cụ gồm đàn piano (Sheets), trống (Gmail) và kèn (Drive), thì Google Apps Script chính là vị nhạc trưởng. Nó không tạo ra âm thanh mới, nhưng nó kết nối từng nhạc cụ lại với nhau theo đúng nhịp điệu và kịch bản mà bạn định sẵn mà không đòi hỏi bạn phải tự mình chạy qua chạy lại bấm từng nốt.

Tiêu chíGoogle Apps ScriptPython/Node.js chạy VPSn8n / Zapier
Server setupKhông cần (Serverless 100%)Tự setup, cấu hình cronjobTự host hoặc trả phí SaaS
Xác thực Google APITích hợp sẵn qua OAuth nội bộPhải tạo GCP Service Account/OAuthPhải kết nối OAuth thủ công
Chi phíMiễn phí (theo quota Google)Tốn tiền VPS hàng thángGiới hạn lượt chạy / đắt
Độ phức tạpThấp (viết JS trực tiếp trên web)Trung bình – CaoThấp (kéo thả node)

Google Apps Script có thể làm được gì thực tế?

Đừng nghĩ GAS chỉ để viết vài hàm tính toán linh tinh thay cho công thức Excel. Dưới đây là 4 nhóm ứng dụng thực chiến mà mình thường xuyên triển khai:

1. Tự động hóa liên dịch vụ trong Google Workspace

Khi có một phản hồi mới từ Google Forms, script tự động kích hoạt: tạo một thư mục mới trên Google Drive mang tên khách hàng, xuất một file Google Docs hợp đồng từ template có sẵn, chuyển file Docs đó thành PDF và gửi thẳng qua Gmail cho khách hàng đính kèm lịch hẹn trên Google Calendar.

2. Xây dựng Bot thông báo và Webhook

GAS hỗ trợ hàm UrlFetchApp.fetch(), cho phép bắn request HTTP ra bên ngoài dễ dàng. Bạn hoàn toàn có thể lập lịch chạy định kỳ (Time-driven trigger) quét dữ liệu đơn hàng trong Sheets và bắn thông báo cảnh báo tồn kho vào nhóm Telegram, Discord, Slack hoặc Zalo Bot qua Webhook.

3. Tích hợp AI (Gemini / OpenAI API) trực tiếp vào Google Sheets

Bạn có thể viết Custom Function trong Sheets để biến một ô bình thường thành một cổng giao tiếp với LLM. Ví dụ: cột A chứa nội dung đánh giá của khách hàng, cột B chỉ cần gõ công thức =ANALYZE_SENTIMENT(A2) là GAS sẽ gọi thẳng Gemini API để phân loại cảm xúc tích cực/tiêu cực.

4. Biến Google Sheets thành RESTful API / Headless CMS

Bằng cách triển khai dưới dạng Web App với hai hàm cốt lõi doGet(e) và doPost(e), GAS có thể hoạt động như một backend mini. Ứng dụng frontend (React, Vue, mobile app) có thể gửi request để đọc hoặc ghi dữ liệu vào Google Sheets mà không cần dựng database SQL hay MongoDB.

Quickstart: Gửi email tự động khi cập nhật Sheets

Để hình dung độ tinh gọn của GAS, hãy xem đoạn script dưới đây giúp quét danh sách công việc cần nhắc nhở và gửi email tự động:

function sendDailyReminders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Tasks");
  const data = sheet.getDataRange().getValues();
  
  // Bỏ qua hàng tiêu đề index 0
  for (let i = 1; i < data.length; i++) {
    const [taskName, assigneeEmail, status] = data[i];
    
    if (status === "Pending" && assigneeEmail) {
      const subject = `[Nhắc việc] Nhiệm vụ cần xử lý: ${taskName}`;
      const body = `Chào bạn,\n\nNhiệm vụ "${taskName}" của bạn hiện đang ở trạng thái Pending. Vui lòng cập nhật tiến độ nhé!`;
      
      GmailApp.sendEmail(assigneeEmail, subject, body);
      
      // Đánh dấu đã gửi thông báo vào cột D
      sheet.getRange(i + 1, 4).setValue("Reminder Sent");
    }
  }
}

Chỉ cần vào Extensions > Apps Script trong Google Sheets, dán đoạn code trên vào và bấm nút Trigger (biểu tượng đồng hồ) để hẹn giờ chạy mỗi sáng lúc 8:00 AM. Toàn bộ hạ tầng do Google gánh, bạn không tốn 1 đồng server.

Giới hạn kỹ thuật và rủi ro cần biết

Dù tiện lợi, Google Apps Script không phải là chiếc đũa thần và có những giới hạn phần cứng nghiêm ngặt:

  • Giới hạn thời gian thực thi (Execution Timeout): Mỗi script chỉ được chạy tối đa 6 phút/lần đối với tài khoản cá nhân (@gmail.com) và 30 phút/lần đối với tài khoản Google Workspace doanh nghiệp. Nếu bạn định cào hàng chục nghìn dòng dữ liệu nặng, script chắc chắn sẽ bị kill giữa chừng.
  • Quota dịch vụ: Tài khoản cá nhân chỉ được gửi tối đa 100 email/ngày qua GmailApp (Workspace trả phí là 1.500 email/ngày). Số lượng request UrlFetchApp cũng bị giới hạn theo ngày.
  • Tốc độ xử lý (Latency): Google Sheets không phải là database tối ưu cho việc truy xuất hàng nghìn request đồng thời (concurrency kém). Đọc/ghi cell liên tục trong vòng lặp for sẽ làm script chạy rất chậm nếu không gom lại bằng getValues() và setValues().
  • Quản lý phiên bản và CI/CD: Trình chỉnh sửa web tích hợp của Google không có code review bài bản. Để làm việc nhóm chuyên nghiệp, bạn bắt buộc phải dùng thêm tool CLI như @google/clasp để sync code về máy cục bộ và đẩy lên GitHub.

Khi nào nên dùng và khi nào KHÔNG?

  • NÊN DÙNG KHI: Tự động hóa nội bộ nhóm nhỏ, xây dựng MVP kiểm chứng nghiệp vụ, xử lý tác vụ định kỳ gắn liền với dữ liệu Google Sheets/Drive, hoặc làm mock API nhanh.
  • KHÔNG NÊN DÙNG KHI: Xây dựng hệ thống production phục vụ hàng ngàn người dùng cùng lúc, xử lý giao dịch tài chính yêu cầu độ trễ thấp (low-latency), hoặc các tác vụ tính toán dữ liệu nặng cần hàng giờ chạy liên tục.

Apps Script sinh ra không phải để thay thế backend truyền thống, mà là cầu nối tự động hóa rẻ nhất và nhanh nhất nếu dữ liệu cốt lõi của bạn đang nằm trên Google Workspace.

Tóm lại những gì cần nhớ:

  • Google Apps Script bản chất là serverless JavaScript chạy trên đám mây của Google, miễn phí và không cần quản lý hạ tầng.
  • Thế mạnh lớn nhất là tích hợp sẵn authentication với Gmail, Sheets, Drive, Docs và hỗ trợ trigger theo thời gian hoặc sự kiện.
  • Luôn chú ý đến giới hạn 6 phút thực thi và batching dữ liệu khi thao tác với bảng tính để tránh chạm trần quota.

Hãy mở ngay một file Google Sheets bất kỳ bạn đang dùng hàng ngày, bấm vào Extensions > Apps Script và thử viết 5 dòng code tự động hóa tác vụ bạn ghét nhất xem sao!

Chúc anh em code vui! 🚀

Tags: #DevOps #Automation #GoogleAppsScript #JavaScript #KhoaPhamBK

Leave a Comment