
Thuộc tính cột AppSheet là bộ công tắc cho từng cột trong bảng: ẩn hay hiện (Show?), cho sửa hay khoá (Editable?), bắt buộc nhập (Require?), đặt tên hiển thị (Display name), chọn cột đại diện cho dòng (Label), bật tìm kiếm (Searchable) và các giới hạn riêng theo kiểu cột như min/max. Bạn mở chúng ở Data → chọn bảng, sửa ngay trên hàng cột hoặc bấm Edit để xem đủ. Bài này đi qua các thuộc tính theo thứ tự trong editor, lấy app «Bán hàng 5F» làm ví dụ. Video bên dưới làm mẫu từng bước, nhưng bài viết vẫn đủ để bạn đọc và làm theo mà không cần xem.
Mở thuộc tính cột ở đâu và cần dặn trước điều gì?
Vào Data, chọn bảng, rồi sửa trực tiếp trên hàng của cột hoặc bấm Edit để thấy toàn bộ thuộc tính, sau đó bấm Save. Vị trí nút có thể khác chút giữa editor mới và legacy, nhưng tên thuộc tính thì giữ nguyên.
Lời dặn của Google: muốn đổi cấu trúc cột (thêm, xoá, đổi thứ tự, đổi tên) thì đổi ở nguồn dữ liệu (Google Sheet) rồi Regenerate schema; chỉ sửa thẳng trong editor khi không còn cách nào khác. Các thuộc tính hành vi như ẩn, khoá, bắt buộc thì cứ chỉnh trong editor.
Danh sách thuộc tính theo tài liệu chính thức gồm: Show?, Type, Valid if, Invalid value error, Require?, App formula, Initial value, Suggested values, Spreadsheet formula, Key, Editable?, Reset on edit?, Label, Display name, Description, Searchable, Scannable, NFC Scannable, Sensitive data (PII). Kiểu cột (Type) đã có bài riêng nên bài này không lặp lại.
Nhóm hiển thị: Show?, Display name, Description, Label làm gì?
Nhóm này quyết định người dùng nhìn thấy gì, không đổi dữ liệu bên dưới.
- Show?: bật/tắt, hoặc dùng biểu thức Show_If để ẩn theo điều kiện. Ví dụ ẩn cột Mã dòng trong màn hình Chi tiết đơn vì nhân viên bán hàng không cần thấy.
- Display name: đổi chữ người dùng nhìn thấy mà không đổi tên cột. Cột
SĐTcó thể hiện là «Số điện thoại». Công thức trong app vẫn gọi[SĐT], nên không sợ vỡ. - Description: dòng gợi ý chỉ hiện trên form, ví dụ «Nhập số điện thoại 10 số».
- Label: chọn cột đại diện cho dòng khi dòng đó hiện trong danh sách và trong ô Ref (cột tham chiếu sang bảng khác). Chi tiết ở phần Row label bên dưới.
Display name khác Column name ở chỗ: Column name là tên thật trong Sheet và trong công thức; Display name chỉ là nhãn bề mặt.
Nhóm nhập liệu: Editable?, Require?, Valid if, Initial value, App formula, Reset on edit?
Nhóm này kiểm soát việc người dùng được nhập gì và nhập thế nào.
- Editable? hoặc Editable_If: khoá cột. Ví dụ cột Tổng tiền không cho sửa tay.
- Require? hoặc Required_If: bắt buộc nhập. Ví dụ cột Khách hàng của đơn.
- Valid if: kiểm tra giá trị hợp lệ hoặc tạo dropdown. Đi kèm Invalid value error để bạn tự viết câu báo lỗi dễ hiểu như «Số lượng phải từ 1 đến 100».
- Initial value: giá trị mặc định, ví dụ cột Ngày đặt là
TODAY(). Giá trị này được tính lại cho tới khi người dùng tự nhập. - App formula: cột tự tính, người dùng KHÔNG ghi đè được. Hợp với Tổng tiền hay Thành tiền.
- Reset on edit?: đưa cột về Initial value mỗi lần dòng được sửa.
- Suggested values: gợi ý giá trị cho người nhập, nhưng không bắt buộc chọn.
Spreadsheet formula là công thức phía Sheet; kết quả chỉ hiện sau khi Save/Sync. Khi nào dùng công thức Sheet, khi nào tránh, mình đã viết ở bài công thức Google Sheet trong app AppSheet. Cách viết biểu thức điều kiện cho Show_If, Required_If, Editable_If nằm trong bài riêng «Show_If, Required_If, Editable_If: form thông minh theo ngữ cảnh».

| Cột bảng Đơn hàng | Thuộc tính nên chỉnh | Lý do |
|---|---|---|
| Mã dòng | Show? tắt | Nhân viên không cần nhìn |
| Khách hàng | Require? bật | Đơn không có khách thì vô nghĩa |
| Ngày đặt | Initial value = TODAY() | Đỡ phải chọn ngày mỗi đơn |
| Tổng tiền | App formula, Editable? tắt | Tránh sửa tay làm lệch số |
Nhóm tìm kiếm và nhập nhanh: Searchable, Scannable, NFC Scannable, Sensitive data (PII)
Ô tìm kiếm của AppSheet có tìm được chữ không dấu: gõ «hong phuc» vẫn ra «Hồng Phúc». Theo tài liệu, tìm kiếm không phân biệt hoa thường, không phân biệt dấu, và tìm trên cả bảng, kể cả cột không hiển thị.
- Searchable: bật sẵn cho hầu hết cột chữ, tắt với cột không phải chữ.
- Scannable: cho phép quét mã vạch/QR vào cột, ví dụ cột Mã SP để thủ kho quét thay vì gõ.
- NFC Scannable: tương tự nhưng cho thẻ NFC.
- Sensitive data (PII): đánh dấu cột chứa thông tin cá nhân như số điện thoại, CCCD.
Với cột Email, nếu công ty dùng Google Workspace, admin đã bật Directory và contact sharing, và người tạo app là chủ app, thì cột Email tự gợi ý địa chỉ đồng nghiệp. Tính năng này chỉ áp dụng cho người dùng cùng tổ chức Workspace với chủ app.
Type Details nào đáng chỉnh cho app bán hàng?
Type Details là phần cài đặt riêng của từng kiểu cột; những mục sau hữu ích nhất cho cửa hàng.
| Kiểu cột | Mục đáng chỉnh | Ví dụ |
|---|---|---|
| Price | Currency symbol, Show thousands separator, Decimal digits | Đơn giá hiện «đ», có dấu phân cách nghìn, 0 chữ số thập phân |
| Number | Minimum value, Maximum value, Display mode, Increase/decrease step | Số lượng từ 1 đến 100 (hoặc 1–1.000 tuỳ cửa hàng) |
| Enum | Values, Allow other values, Auto-complete other values, Input mode | Trạng thái đơn: Mới, Đã giao, Đã thu tiền |
| Text | Minimum length, Maximum length | Mã SP đúng độ dài quy ước |
| Phone | Callable, Textable | Bấm gọi hoặc nhắn khách ngay từ app |
| Date/DateTime | Minimum date, Maximum date, Use long date format | Không cho chọn ngày giao trong quá khứ |
| Image | Allow drawing on images, Image/File folder path | Vẽ ghi chú lên ảnh hàng, chọn thư mục lưu ảnh |
| Yes/No | Chữ hiện thay cho Y/N | «Đã thanh toán» / «Chưa thanh toán» |
| Ref | Source table, Is a part of? | Đơn hàng trỏ về bảng Khách hàng |
Để giới hạn số lượng nhập từ 1 đến 100, đặt cột kiểu Number rồi điền Minimum value là 1 và Maximum value là 100. Display mode của Number có ba lựa chọn: Standard (có nút +/−), Range (thanh trượt) và Label (ô gõ); bước nhảy chỉnh ở Increase/decrease step.
Với Enum, Input mode có Buttons, Stack hoặc Dropdown. Allow other values cho phép nhập giá trị ngoài danh sách, nhưng không hỗ trợ với AppSheet database. Với Ref, Is a part of? nghĩa là dòng con bị xoá theo dòng cha (ví dụ chi tiết đơn xoá theo đơn); việc xoá này không kích hoạt automation. Bạn có thể xem thêm bảng kiểu cột ở bài column type AppSheet.
Row label là gì và nên chọn cột nào làm đại diện cho dòng?
Row label là cột chữ đại diện cho cả dòng. Mỗi bảng có một label chữ (bắt buộc) và tuỳ chọn một label ảnh. Label AppSheet dùng để làm gì? Nó quyết định:
- chữ lớn trong Deck view (dạng thẻ);
- cột đầu tiên trong Table view;
- chữ dưới ảnh trong Gallery view;
- tiêu đề ở màn hình Detail;
- chữ hiện trong popup chọn Ref.

Muốn label ghép kiểu «DH001 – Cửa hàng Minh An», làm theo các bước sau:
- Tạo virtual column (cột ảo, tính trong app, không lưu vào Sheet), đặt tên Nhãn đơn.
- Ở App formula, nhập
CONCATENATE([Mã đơn], " – ", [Khách hàng]). Nếu Khách hàng là Ref thì nên dùng cột tên khách thay vì mã. - Tắt Label ở cột cũ.
- Bật Label ở cột Nhãn đơn rồi Save.

Thêm, xoá, đổi thứ tự cột thế nào để app không hỏng?
Sửa ở Google Sheet trước, rồi vào Data → chọn bảng → Regenerate schema → Regenerate → Save. Quên bước này, app sẽ báo lỗi lệch số cột giữa sheet và schema. Thêm cột «Mã vận đơn» vào sheet Đơn hàng là ví dụ giả định: sau khi regenerate, hãy kiểm tra Type của cột mới rồi Save và Sync.
Ba lưu ý theo tài liệu Regenerate:
- Regenerate không hoàn tác được, nên sao lưu trước khi làm.
- Với app dựng từ Google Forms, hãy xoá ghi chú (notes) ở dòng tiêu đề sheet trả lời trước khi regenerate; nếu không, cấu hình cột bị ghi đè. Lỡ tay thì khôi phục bản app cũ.
- Chỉ cần ẩn hoặc thêm cột trong app thì dùng Show?, Show_If, virtual column hoặc slice (tập con của bảng) thay vì sửa nguồn.

Vì sao Regenerate schema chậm và xử lý thế nào?
Regenerate chậm thường do công thức trong Sheet. Theo tài liệu của Google, khi regenerate AppSheet đọc tiêu đề, giá trị, định dạng, công thức và data validation của sheet; nó phải tính hết chuỗi công thức (Calc Chain) trước. Thời gian có thể từ vài giây đến nhiều phút, và số dòng gấp đôi thì chuỗi có thể dài gấp đôi.
- Sao lưu toàn bộ dữ liệu.
- Tạm chỉ để 3–5 dòng trong sheet.
- Regenerate schema.
- Kiểm tra tên và kiểu của từng cột.
- Dán lại dữ liệu và Sync.
Tóm tắt và bước tiếp theo
Hiển thị chỉnh bằng Show?, Display name, Description; nhập liệu chỉnh bằng Editable?, Require?, Valid if, Initial value, App formula; tìm kiếm có Searchable và không phân biệt dấu; mỗi bảng cần một Label chữ; đổi cấu trúc thì sửa Sheet rồi Regenerate schema. Việc nên làm ngay: mở bảng Đơn hàng của app, khoá Tổng tiền, bắt buộc Khách hàng, đặt Maximum value cho Số lượng và tạo cột Nhãn đơn làm Label.
Nếu muốn học theo lộ trình có người hướng dẫn, bạn có thể xem các lớp tại trang khoá học 5F Edu. Danh sách đầy đủ thuộc tính nằm ở tài liệu chính thức về thuộc tính cột.
Xem thêm
- Column type AppSheet: bảng tổng hợp mọi kiểu cột và khi nào dùng
- Show_If, Required_If, Editable_If: form thông minh theo ngữ cảnh (sắp đăng)
Câu hỏi thường gặp
›Label trong AppSheet dùng để làm gì?
Label chọn cột đại diện cho cả dòng. Nó hiện làm chữ lớn trong Deck view, cột đầu trong Table view, chữ dưới ảnh trong Gallery, tiêu đề ở Detail và chữ trong popup chọn Ref. Mỗi bảng cần một label chữ và có thể thêm một label ảnh.
›Thêm cột mới vào Google Sheet thì làm gì để app nhận?
App không tự nhận cột mới. Bạn vào Data, chọn bảng, bấm Regenerate schema, chọn Regenerate rồi Save. Sau đó kiểm tra Type của cột mới và Sync. Quên bước này, app sẽ báo lỗi lệch số cột giữa sheet và schema.
›Ô tìm kiếm AppSheet có tìm được tiếng Việt không dấu không?
Có. Tìm kiếm không phân biệt hoa thường và dấu, nên gõ «hong phuc» vẫn ra «Hồng Phúc». Nó tìm trên cả bảng, kể cả cột không hiển thị trong app.
›Display name khác Column name thế nào?
Column name là tên thật của cột trong Sheet và trong công thức. Display name chỉ là chữ người dùng nhìn thấy trên app, nên đổi nó không làm hỏng công thức đang gọi tên cột.
Tác giả
Chuyên gia chuyển đổi số · Đại diện 5F Edu
Hơn 8 năm triển khai và tư vấn chuyển đổi số cho doanh nghiệp vừa và nhỏ: chuẩn hoá quy trình, xây phần mềm quản lý bằng AppSheet và web app, tự động hoá bằng N8N. Người làm kênh YouTube Nghiện AppSheet.



