Claude Code + Google Apps Script
Dựng web app đặt món bằng Claude Code và 3 lệnh clasp
Muốn tạo và publish một web app Google Apps Script, như form đặt món ghi vào Google Sheet, bạn bắt buộc phải làm gì?
Phân vai ba bên
Bạn giữ đề bài và quyền duyệt. Claude Code viết code và đề xuất lệnh. clasp chuyển code lên Google và trả link web app về terminal.
Bạn ra đề và duyệt
Nói form cần những trường nào, đọc từng lệnh và quyết định khi nào publish.
Claude Code viết và gõ lệnh
Tạo Code.js, Form.html, sửa code và dừng lại xin phép trước lệnh cần quyền.
clasp đưa code lên Google
Tạo project, push file và quản lý deployment từ terminal.
Hình minh họa
Demo 1, 3 lệnh từ 0 đến link công khai
Chọn từng bước để xem đúng lệnh và kết quả đã chạy trên máy của Dat.
$ clasp create-script --title "Don Coffee - Đặt món" --type sheets Created new document: https://drive.google.com/open?id=1h-SXBqv...CLhE Created new script: https://script.google.com/d/1HLx-Hu9...ixpM/edit └─ appsscript.json Cloned one file..
Một lệnh tạo cả Google Sheet lẫn project Apps Script gắn với Sheet đó.
Demo 2, trình duyệt hay Claude Code
Cách thứ hai vẫn giữ quyền duyệt ở bạn, nhưng phần code và thao tác lặp lại diễn ra trong terminal.
Hai cách tạo cùng một web app đặt món trên Google Apps Script.
- 1Mở script.google.com.
- 2Tạo project mới.
- 3Gõ code trong editor web.
- 4Gắn project với Google Sheet.
- 5Mở menu deploy và chọn web app.
- 6Copy link để gửi cho khách.
Demo 3, sửa xong, link giữ nguyên
Bản sau tính tổng tiền cho đơn hàng, thêm cột vào Sheet và cập nhật đúng deployment đang có.
Cùng hàm guiDon, bản sau thêm cột tổng tiền và giữ nguyên link web app.
sheet.appendRow([new Date(), don.tenKhach, don.mon, don.soLuong]); return "Đã nhận đơn của " + don.tenKhach + "!";
Đã nhận đơn của Chị Lan!Menu thật
Phin sữa đá (25k) Bạc xỉu (29k) Cold brew cam (35k) Trà đào cam sả (32k)
Header Sheet Đơn hàng
Thời gian, Tên khách, Món, Số lượng, Tổng tiềnTrong laySheetDonHang, bản sau thêm header Tổng tiền và tự điền lại ô E1 cho những Sheet đã được tạo từ bản đầu.
$ clasp push Pushed 3 files at 10:16:14 AM. └─ appsscript.json └─ Code.js └─ Form.html $ clasp update-deployment AKfycbzi...RZWA -d "them tong tien" Redeployed AKfycbzi...RZWA @2
clasp push chỉ đưa code lên editor. Bản publish đứng yên ở phiên bản cũ cho đến khi clasp update-deployment chạy. Dòng Redeployed AKfycbzi...RZWA @2 cho thấy cùng deployment ID đã lên phiên bản mới, nên link không đổi.
- Publish một lần để lấy link, sửa nhiều lần thì link vẫn giữ nguyên.
- Claude Code xin phép trước mọi lệnh cần quyền.
- Google Sheet đủ làm kho đơn hàng miễn phí cho một form nhỏ.
clasp login là bạn tự đăng nhập, nút đồng ý trước mỗi lệnh và quyết định publish. Điều khiển bằng AI không có nghĩa là buông tay khỏi tài khoản của mình.Claude Code đề xuất chạy clasp create-script nhưng bạn chưa từng clasp login. Điều gì xảy ra?
Bạn sửa Code.js, chạy clasp push thành công, nhưng khách mở link vẫn thấy bản cũ. Thiếu bước nào?
Giải thích
Ba công cụ trong lần chạy
Claude Code
Agent của Anthropic chạy trong terminal, viết file và đề xuất lệnh theo đề bài của bạn.
clasp
CLI chính thức của Google cho Apps Script, cài qua npm và dùng để tạo, đẩy, publish project.
Google Sheet
Kho dữ liệu nhận từng đơn với thời gian, tên khách, món, số lượng và tổng tiền.
Đi xa hơn, clasp 3 còn có lệnh start-mcp-server để AI agent nói chuyện trực tiếp với Apps Script.
Vòng lặp bốn bước
Ra đề bài rõ
Nói form gồm gì và dữ liệu phải ghi vào đâu.
Viết và duyệt
Claude Code viết code, đề xuất lệnh, bạn đọc rồi duyệt từng lệnh.
Tạo và publish
create-script, push và create-deployment tạo project rồi trả link.
Sửa và cập nhật
push code mới rồi update-deployment để giữ nguyên link.
Xương sống của vòng lặp là create-script, clasp push, clasp create-deployment và khi sửa là clasp update-deployment.
Bốn cái bẫy cần đọc trước khi chạy
Link 403 dù deploy thành công
Điều này đã xảy ra trong lần chạy thật. Publish hoàn toàn bằng lệnh nghĩa là tài khoản chưa từng cấp quyền cho script chạy. Mở editor, bấm Run một lần, đọc màn hình quyền và cho phép thì link chạy ngay. Nếu push bị chặn từ đầu, kiểm tra thêm công tắc Apps Script API trong settings.
Chỉ push rồi tưởng code hỏng
push cập nhật editor nhưng bản publish vẫn đứng ở phiên bản cũ. Chạy update-deployment cho đúng deployment đang dùng.
Mở form cho tất cả mọi người
Quyền ai cũng gửi được giúp khách đặt món, nhưng form công khai có thể nhận đơn rác. Form nội bộ nên giới hạn người truy cập.
Đồng ý khi chưa đọc lệnh
Đọc mục tiêu và phạm vi trước khi bấm đồng ý, nhất là lệnh xóa như delete-script
Bốn khuôn prompt copy được ngay
A. Dựng web app form
Tạo web app [mục đích] bằng Google Apps Script, dùng clasp. Form gồm [các trường], ghi dữ liệu vào Google Sheet [tên Sheet].
B. Thêm tính năng
Trong script đang có, thêm [tính năng]. Giữ nguyên [phần không được đổi]. Sau khi sửa, đẩy code và cập nhật deployment hiện tại để link không đổi.
C. Giải thích lệnh trước khi chạy
Trước khi chạy [lệnh], giải thích lệnh sẽ đọc, tạo, sửa hoặc xóa gì. Chờ tôi đồng ý rồi mới chạy.
D. Tự động hóa một Sheet khác
Tự động hóa Google Sheet [điểm danh lớp học hoặc chấm công]. Dữ liệu đầu vào gồm [các cột]. Tạo giao diện [mô tả] và quy tắc [điều kiện].
Đăng nhập luôn là bước của bạn
Khi cần quyền Google, bạn chạy clasp login và tự hoàn tất màn hình đăng nhập. Claude Code không thay bạn sở hữu phiên đăng nhập đó.
- create-script, push và create-deployment là xương sống từ project trống đến link web app.
- Sửa code cần push và update-deployment. Thiếu bước sau thì link vẫn chạy bản cũ.
- Đăng nhập Google và nút đồng ý trước lệnh luôn thuộc quyền của bạn.
- Google Sheet đủ làm kho đơn hàng cho một form nhỏ.
- Bẫy lớn nhất là quên update-deployment rồi tưởng code hỏng.
- Form công khai cần giới hạn dữ liệu thu và chuẩn bị cho đơn rác.
Khám phá thêm
Đọc Claude Code dành cho người không code hoặc quay lại tình huống Don Coffee trong bài khảo sát đối thủ bằng AI.
Kiểm tra hiểu biết
clasp là gì và do ai cung cấp?