Cấu Trúc Ứng Dụng AKA-Form » History » Revision 4
Revision 3 (Lê Sĩ Quý, 08/19/2025 06:50 AM) → Revision 4/8 (Lê Sĩ Quý, 08/19/2025 07:18 AM)
{{TOC}}
Mỗi AKA-Form web app là 1 file Google Spreadsheet (sử dụng Google Apps Script phía sau), để tiết kiệm thời gian bạn nên bắt đầu với template có sẵn thay vì tạo mới mọi thứ từ đầu. Template bao gồm các sheet & Apps Script code project.
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
## Sheet Datasources
Sheet **Datasources** cấu hình nguồn dữ liệu (datasource) sử dụng với web app, hiện tại chỉ hỗ trợ datasource là Google Spreadsheets. Một datasouce có thể là 1 sheet cùng file với file spreadsheet app hoặc nằm bên ngoài. Các field bao gồm:
* **Id** : tên gợi nhớ để tham chiếu ở mục khác, không nên dùng ký tự trắng (space) trong giá trị của field Id.
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot
* **Sheet**: tên sheet sẽ truy vấn.
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J...
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
* **Note**: Ghi chú bổ sung
## Sheet Users
Trường hợp app có sử dụng authentication, sheet **Users** cung cấp cách thức để quản lý user đơn giản. Người dùng đăng nhập với Email & Password.
Sheet **Users** bao gồm các field :
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
* **Email** : Email để đăng nhập, không nhất thiết phải email có thực, định dạng giá trị phải là 1 email hợp lệ
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
* **Note**: Ghi chú bổ sung
## Sheet Forms
AKA-Form web app là tập hợp các form độc lập. Sự liên hệ giữa các form được quy định trong từng form, ví dụ: để truy cập form Customers thì bắt buộc phải login trước. Logic này sẽ được cài đặt bằng Javascript trong form Customers, nếu thông tin đăng nhập không hợp lệ sẽ redirect sang form Login.
Html Template Database References SubForms NewUrl Link
Sheet **Forms** bao gồm các field :
* **Id** : tên gợi nhớ để tham chiếu ở mục Url, không ký tự trắng (space) hoặc ký tự đặc biệt.
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
* **Html**: HTML code (JS/CSS) để tạo nên front-end của formC}}
Mỗi AKA-Form web app là 1 file Google Spreadsheet (sử dụng Google Apps Script phía sau), để tiết kiệm thời gian bạn nên bắt đầu với template có sẵn thay vì tạo mới mọi thứ từ đầu. Template bao gồm các sheet & Apps Script code project.
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
## Sheet Datasources
Sheet **Datasources** cấu hình nguồn dữ liệu (datasource) sử dụng với web app, hiện tại chỉ hỗ trợ datasource là Google Spreadsheets. Một datasouce có thể là 1 sheet cùng file với file spreadsheet app hoặc nằm bên ngoài. Các field bao gồm:
* **Id** : tên gợi nhớ để tham chiếu ở mục khác, không nên dùng ký tự trắng (space) trong giá trị của field Id.
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot
* **Sheet**: tên sheet sẽ truy vấn.
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J...
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
* **Note**: Ghi chú bổ sung
## Sheet Users
Trường hợp app có sử dụng authentication, sheet **Users** cung cấp cách thức để quản lý user đơn giản. Người dùng đăng nhập với Email & Password.
Sheet **Users** bao gồm các field :
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
* **Email** : Email để đăng nhập, không nhất thiết phải email có thực, định dạng giá trị phải là 1 email hợp lệ
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
* **Note**: Ghi chú bổ sung
## Sheet Forms
AKA-Form web app là tập hợp các form/page độc lập. Sự liên hệ giữa các form được quy định trong từng form, ví dụ: để truy cập form Customers thì bắt buộc phải login trước. Logic này sẽ được cài đặt bằng Javascript trong form Customers, nếu thông tin đăng nhập không hợp lệ sẽ redirect sang form Login.
Html Template Database References SubForms NewUrl Link
Sheet **Forms** bao gồm các field :
* **Id** : tên gợi nhớ để tham chiếu ở mục Url, không ký tự trắng (space) hoặc ký tự đặc biệt.
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
* **Html**: HTML code (JS/CSS) để tạo nên front-end của form/page, hỗ trợ [Templated HTML](https://developers.google.com/apps-script/guides/html/templates)
* **Template**: JSON Schema sinh ra bởi Form.IO Builder
Mỗi AKA-Form web app là 1 file Google Spreadsheet (sử dụng Google Apps Script phía sau), để tiết kiệm thời gian bạn nên bắt đầu với template có sẵn thay vì tạo mới mọi thứ từ đầu. Template bao gồm các sheet & Apps Script code project.
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
## Sheet Datasources
Sheet **Datasources** cấu hình nguồn dữ liệu (datasource) sử dụng với web app, hiện tại chỉ hỗ trợ datasource là Google Spreadsheets. Một datasouce có thể là 1 sheet cùng file với file spreadsheet app hoặc nằm bên ngoài. Các field bao gồm:
* **Id** : tên gợi nhớ để tham chiếu ở mục khác, không nên dùng ký tự trắng (space) trong giá trị của field Id.
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot
* **Sheet**: tên sheet sẽ truy vấn.
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J...
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
* **Note**: Ghi chú bổ sung
## Sheet Users
Trường hợp app có sử dụng authentication, sheet **Users** cung cấp cách thức để quản lý user đơn giản. Người dùng đăng nhập với Email & Password.
Sheet **Users** bao gồm các field :
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
* **Email** : Email để đăng nhập, không nhất thiết phải email có thực, định dạng giá trị phải là 1 email hợp lệ
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
* **Note**: Ghi chú bổ sung
## Sheet Forms
AKA-Form web app là tập hợp các form độc lập. Sự liên hệ giữa các form được quy định trong từng form, ví dụ: để truy cập form Customers thì bắt buộc phải login trước. Logic này sẽ được cài đặt bằng Javascript trong form Customers, nếu thông tin đăng nhập không hợp lệ sẽ redirect sang form Login.
Html Template Database References SubForms NewUrl Link
Sheet **Forms** bao gồm các field :
* **Id** : tên gợi nhớ để tham chiếu ở mục Url, không ký tự trắng (space) hoặc ký tự đặc biệt.
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
* **Html**: HTML code (JS/CSS) để tạo nên front-end của formC}}
Mỗi AKA-Form web app là 1 file Google Spreadsheet (sử dụng Google Apps Script phía sau), để tiết kiệm thời gian bạn nên bắt đầu với template có sẵn thay vì tạo mới mọi thứ từ đầu. Template bao gồm các sheet & Apps Script code project.
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
## Sheet Datasources
Sheet **Datasources** cấu hình nguồn dữ liệu (datasource) sử dụng với web app, hiện tại chỉ hỗ trợ datasource là Google Spreadsheets. Một datasouce có thể là 1 sheet cùng file với file spreadsheet app hoặc nằm bên ngoài. Các field bao gồm:
* **Id** : tên gợi nhớ để tham chiếu ở mục khác, không nên dùng ký tự trắng (space) trong giá trị của field Id.
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot
* **Sheet**: tên sheet sẽ truy vấn.
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J...
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
* **Note**: Ghi chú bổ sung
## Sheet Users
Trường hợp app có sử dụng authentication, sheet **Users** cung cấp cách thức để quản lý user đơn giản. Người dùng đăng nhập với Email & Password.
Sheet **Users** bao gồm các field :
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
* **Email** : Email để đăng nhập, không nhất thiết phải email có thực, định dạng giá trị phải là 1 email hợp lệ
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
* **Note**: Ghi chú bổ sung
## Sheet Forms
AKA-Form web app là tập hợp các form/page độc lập. Sự liên hệ giữa các form được quy định trong từng form, ví dụ: để truy cập form Customers thì bắt buộc phải login trước. Logic này sẽ được cài đặt bằng Javascript trong form Customers, nếu thông tin đăng nhập không hợp lệ sẽ redirect sang form Login.
Sheet **Forms** bao gồm các field :
* **Id** : tên gợi nhớ để tham chiếu ở mục Url, không ký tự trắng (space) hoặc ký tự đặc biệt.
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
* **Html**: HTML code (JS/CSS) để tạo nên front-end của form/page, hỗ trợ [Templated HTML](https://developers.google.com/apps-script/guides/html/templates)
* **Template**: Form JSON sinh ra bởi [Form.IO Builder](https://formio.github.io/formio.js/app/sandbox.html)
* **Database**: Tên datasource sẽ đọc dữ liệu, trong trường hợp form Edit sẽ kiểm tra Database có chứa record với id edit tương ứng
* **References**: Trường hợp các thành phần UI của form có sử dụng data lookup, ví dụ: trong form Order, combobox Products sẽ cần load danh sách product bằng cách tham chiếu đến Reference tương ứng cấu hình trong Form JSON
* **SubForms**: Phần nâng cao, dành cho form không sử dụng cơ chế lưu trữ Document mà lưu phẳng trong Spreadsheet
* **NewUrl**: *Url để tạo mới record, cũng là template url sử dụng Google Form đóng vai trò làm backend lưu trữ, ví dụ: https://docs.google.com/forms/d/e/1FAIpQLScLnowNlnQXZvp8yFmTcuGFXi0C71K8I9mDNvk8Jha-rRcI3Q/formResponse?entry.779708373=Employees&entry.1745485693={Document}&entry.26640752={Id}&entry.967646527={CreatedBy}&entry.1408490212={ModifiedBy}&entry.2129865903={CreatedAt}&entry.95214425={ModifiedAt}&entry.988375443={IsDeleted}*
* **Link**: đơn thuần là lối tắt để form, format dạng *<web-app-published>?url=/form/<Id>*