Project

General

Profile

Cấu Trúc Ứng Dụng AKA-Form » History » Version 4

Lê Sĩ Quý, 08/19/2025 07:18 AM

1 2 Lê Sĩ Quý
{{TOC}}
2
3
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.
4
5
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
6
7
## Sheet Datasources
8
9
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:
10
11
* **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.
12
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot 
13
* **Sheet**: tên sheet sẽ truy vấn.
14
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J... 
15
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
16
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
17
* **Note**: Ghi chú bổ sung
18 3 Lê Sĩ Quý
19
## Sheet Users
20
21
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. 
22
23
Sheet **Users** bao gồm các field :
24
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
25
* **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ệ
26
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
27
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
28
* **Note**: Ghi chú bổ sung
29 4 Lê Sĩ Quý
30
## Sheet Forms
31
32
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.
33
	Html	Template	Database	References	SubForms	NewUrl	Link
34
35
Sheet **Forms** bao gồm các field :
36
* **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.
37
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
38
* **Html**: HTML code (JS/CSS) để tạo nên front-end của formC}}
39
40
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.
41
42
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
43
44
## Sheet Datasources
45
46
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:
47
48
* **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.
49
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot 
50
* **Sheet**: tên sheet sẽ truy vấn.
51
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J... 
52
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
53
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
54
* **Note**: Ghi chú bổ sung
55
56
## Sheet Users
57
58
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. 
59
60
Sheet **Users** bao gồm các field :
61
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
62
* **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ệ
63
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
64
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
65
* **Note**: Ghi chú bổ sung
66
67
## Sheet Forms
68
69
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.
70
	Html	Template	Database	References	SubForms	NewUrl	Link
71
72
Sheet **Forms** bao gồm các field :
73
* **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.
74
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
75
* **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)
76
* **Template**: JSON Schema sinh ra bởi Form.IO Builder
77
78
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.
79
80
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
81
82
## Sheet Datasources
83
84
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:
85
86
* **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.
87
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot 
88
* **Sheet**: tên sheet sẽ truy vấn.
89
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J... 
90
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
91
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
92
* **Note**: Ghi chú bổ sung
93
94
## Sheet Users
95
96
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. 
97
98
Sheet **Users** bao gồm các field :
99
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
100
* **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ệ
101
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
102
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
103
* **Note**: Ghi chú bổ sung
104
105
## Sheet Forms
106
107
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.
108
	Html	Template	Database	References	SubForms	NewUrl	Link
109
110
Sheet **Forms** bao gồm các field :
111
* **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.
112
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
113
* **Html**: HTML code (JS/CSS) để tạo nên front-end của formC}}
114
115
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.
116
117
Lưu ý: không nên đổi tên các SHEET dưới đây vì sẽ khiến app gặp lỗi
118
119
## Sheet Datasources
120
121
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:
122
123
* **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.
124
* **Url** : chứa địa chỉ của file spreadsheet nếu sheet của datasouce không nằm cùng file spreadsheet bot 
125
* **Sheet**: tên sheet sẽ truy vấn.
126
* **Range**: vùng địa chỉ sẽ truy vấn, ví dụ: A1:J... 
127
* **Header**: số lượng dòng (row) làm header có trong Range dữ liệu
128
* **Cached**: Yes: cache data được load, tăng hiệu suất ứng dụng
129
* **Note**: Ghi chú bổ sung
130
131
## Sheet Users
132
133
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. 
134
135
Sheet **Users** bao gồm các field :
136
* **Name** : tên gợi nhớ để tham chiếu ở mục khác.
137
* **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ệ
138
* **Password**: Mật khẩu để đăng nhập. Password được mã hóa bằng hàm md5, ví dụ *md5("Hello") => 8b1a9953c4611296a827abf8c47804d7*
139
* **IsActive**: **Yes** : user đang hoạt động, **No** : User bị khóa
140
* **Note**: Ghi chú bổ sung
141
142
## Sheet Forms
143
144
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.
145
146
Sheet **Forms** bao gồm các field :
147
* **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.
148
* **Name** : tên gợi nhớ để tham chiếu ở mục khác, có thể bao gồm khoảng trắng
149
* **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)
150
* **Template**: Form JSON sinh ra bởi [Form.IO Builder](https://formio.github.io/formio.js/app/sandbox.html)
151
* **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
152
* **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
153
* **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
154
* **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}*
155
* **Link**: đơn thuần là lối tắt để form, format dạng *<web-app-published>?url=/form/<Id>*