Các thành phần chính cấu tạo nên một ứng dụng bao gồm:
Cấu trúc dữ liệu (Data Structure): Cấu trúc dữ liệu là cách dữ liệu được lưu trữ và quản lý trong ứng dụng, bao gồm cả cách tạo các bảng, cột và quan hệ giữa các bảng.
Giao diện người dùng (User Interface): Giao diện người dùng là phần mà người sử dụng sẽ gặp trực tiếp khi sử dụng ứng dụng, bao gồm cả các nút, menu, hình ảnh và các thành phần khác.
Chức năng (Functionality): Chức năng là các tính năng mà ứng dụng có thể thực hiện, bao gồm cả các chức năng thu thập, xử lý và quản lý dữ liệu, chức năng quản lý người dùng và quyền truy cập, chức năng tích hợp với các nguồn dữ liệu bên ngoài và chức năng quản lý và ra quyết định.
Quy tắc và luật (Rules and Logic): Quy tắc và luật là các quy tắc và logic được sử dụng để điều khiển hoạt động của ứng dụng và xử lý dữ liệu.
Tích hợp API (API Integration): Tích hợp API cho phép ứng dụng tích hợp với các dịch vụ và công cụ khác nhau, giúp cho ứng dụng có thể sử dụng các tính năng và dữ liệu từ các nguồn khác.
Bảo mật (Security): Bảo mật là các chính sách và quy trình được sử dụng để bảo vệ dữ liệu và hệ thống của ứng dụng.
Cấu trúc dữ liệu (Data Structure):
Table trong Appsheet
Trong AppSheet, một table (bảng dữ liệu) là một bộ sưu tập các dữ liệu có cấu trúc được sắp xếp thành các hàng và cột. Mỗi bảng đại diện cho một loại đối tượng hoặc một tập hợp các đối tượng liên quan và có thể chứa các thông tin khác nhau về các đối tượng đó.
Ví dụ, nếu bạn đang xây dựng một ứng dụng quản lý danh sách nhân viên, bạn có thể tạo một bảng dữ liệu có tên là "Employees" và các cột cho tên, ngày sinh, địa chỉ email, số điện thoại và vị trí công việc của mỗi nhân viên. Bạn có thể thêm dữ liệu vào bảng này bằng cách thủ công hoặc bằng cách liên kết với một nguồn dữ liệu khác như Google Sheets hoặc Microsoft Excel.
Sau khi tạo một bảng dữ liệu, bạn có thể sử dụng nó để tạo các biểu mẫu, báo cáo và các chức năng khác trong ứng dụng của mình.
💡 Appsheet hỗ trợ cho chúng ta kết nối rất nhiều nguồn dữ liệu, Excel, Google sheets, MySQL, ở trng học Appsheet này chúng ta sẽ làm quen với việc sử dụng Google sheet.
Một số lợi ích khi chúng ta làm quen với Google sheet như sau:
Miễn phí
Dễ dàng quản lý dữ liệu: Google Sheet cung cấp một giao diện thân thiện và dễ sử dụng để quản lý và chỉnh sửa dữ liệu, còn kết hợp với Appsheet cho phép xử lý và quản lý dữ liệu tự động hơn.
Tích hợp với các công cụ khác: Google Sheet có thể tích hợp với rất nhiều công cụ khác nhau, chẳng hạn như Google Form, Google Calendar, v.v, giúp cho việc thu thập và xử lý dữ liệu trở nên dễ dàng hơn.
Chia sẻ dữ liệu: Google Sheet cho phép chia sẻ dữ liệu với nhiều người cùng lúc, giúp cho việc quản lý và xử lý dữ liệu trở nên hiệu quả hơn.
Hỗ trợ các hàm xử lý mảng: Google sheet rất mạnh mẽ trong việc xử lý các mảng bằng các công thức như UNIQUE, ARRAYFORMULA, QUERY.
Dễ dàng xuất và nhập dữ liệu : Google Sheet hỗ trợ xuất và nhập dữ liệu từ các nguồn khác nhau, chẳng hạn như Excel, CSV, v.v. Điều này giúp cho việc quản lý và xử lý dữ liệu trở nên dễ dàng hơn, cũng như tiết kiệm thời gian và công sức.
Có thể tạo ra các báo cáo và thống kê: Kết hợp với Appsheet, chúng ta có thể tạo ra các báo cáo và thống kê dữ liệu theo yêu cầu, giúp cho việc quản lý và ra quyết định trở nên hiệu quả hơn.
Một số điểm hạn chế của Google Sheet
Số lượng dòng và cột: Mỗi bảng trong Google Sheet có giới hạn số lượng dòng là 10 triệu ô tính, Điều này có nghĩa là số dòng tối đa có thể thay đổi tùy thuộc vào số cột bạn sử dụng. Ví dụ, nếu bạn có 5 cột, bạn có thể có tối đa 2 triệu dòng (5 cột x 2 triệu dòng = 10 triệu ô). Tuy nhiên, việc sử dụng quá nhiều dòng và ô có thể làm giảm hiệu suất của Google Sheets.
Dung lượng lưu trữ: Mỗi tài khoản Google có dung lượng lưu trữ miễn phí là 15GB, và người dùng có thể mua thêm dung lượng lưu trữ.
Số lượng người chia sẻ: Mỗi bảng trong Google Sheet có giới hạn số lượng người chia sẻ là 200.
Tốc độ xử lý: Khi số lượng dữ liệu lớn, tốc độ xử lý của Google Sheet có thể chậm hơn so với các công cụ quản lý dữ liệu khác.
Không hỗ trợ các tính năng phức tạp: Google Sheet không hỗ trợ các tính năng phức tạp như xử lý dữ liệu, tạo quy trình tự động, tích hợp với các hệ thống khác. Nếu cần các tính năng này, người dùng cần sử dụng các công cụ khác cùng với Google Sheet.
Làm quen với Google Sheet
Làm quen với Google Sheet:
Tạo một Trang tính mới trên Google Sheet:
Truy cập trang web Google Sheets (https://sheets.google.com) và đăng nhập bằng tài khoản Google của bạn.
Nhấp vào nút "+ Tạo trang tính" hoặc "Blank" để tạo một trang tính mới.
Lưu và quản lý trang tính trên Google Sheet:
Khi bạn tạo một trang tính mới, nó sẽ tự động lưu trên Google Drive của bạn. Bạn có thể đổi tên bằng cách nhấp vào tiêu đề mặc định ("Trang tính không có tiêu đề") và nhập tên mới. Để quản lý các trang tính, truy cập Google Drive (https://drive.google.com), tìm và mở các trang tính từ đó.
Một số thao tác cơ bản:
Nhập dữ liệu: Chỉ cần nhấp vào ô bạn muốn nhập dữ liệu và bắt đầu nhập.
Sao chép, cắt, dán: Sử dụng phím tắt (Ctrl+C, Ctrl+X, Ctrl+V) hoặc nhấp chuột phải vào ô và chọn tương ứng trong menu.
Cố định cột, hàng:
Để cố định cột hoặc hàng, chọn cột hoặc hàng bạn muốn cố định, sau đó nhấp chuột phải và chọn "Cố định cột" hoặc "Cố định hàng".
Định dạng dữ liệu:
Chọn ô, cột hoặc hàng cần định dạng. Sử dụng các công cụ trên thanh công cụ (ví dụ: chọn kiểu chữ, kích thước, màu sắc, căn lề) để định dạng dữ liệu.
Lọc dữ liệu:
Chọn vùng dữ liệu cần lọc, sau đó nhấp vào "Dữ liệu" trên thanh công cụ và chọn "Tạo bộ lọc". Bạn sẽ thấy các biểu tượng bộ lọc xuất hiện ở đầu mỗi cột. Nhấp vào biểu tượng để lọc dữ liệu theo mong muốn.
Xem lịch sử chỉnh sửa dữ liệu, khôi phục lại lịch sử phiên bản:
Trong trang tính, nhấp vào "Tệp" trên thanh công cụ và chọn "Phiên bản trước đó". Bạn sẽ thấy danh sách các phiên bản đã lưu. Chọn phiên bản bạn muốn khôi phục và nhấp "Khôi phục".
Chạy Appscript:
Trong trang tính, nhấp vào "Tiện ích" trên thanh công cụ và chọn "Script Editor" (Biên tập mã).
Một cửa sổ mới sẽ mở ra với trình biên tập mã Google Apps Script. Bạn có thể viết mã của mình ở đây, lưu và chạy mã bằng cách sử dụng nút "Chạy" (hình tam giác màu xanh lá cây) trên thanh công cụ.
Khi bạn viết mã, bạn có thể tìm kiếm thư viện hỗ trợ, tham khảo tài liệu và sử dụng các tính năng của Google Apps Script để tương tác với các dịch vụ Google khác như Google Sheets, Google Docs, Google Drive, Gmail, Google Calendar, và nhiều hơn nữa.
Bạn cũng có thể xuất bản mã của mình dưới dạng tiện ích hoặc ứng dụng web để chia sẻ với người khác hoặc tích hợp vào các dự án khác.
Với những hướng dẫn trên, bạn đã có thể bắt đầu làm quen và sử dụng Google Sheets một cách hiệu quả. Bạn có thể tiếp tục khám phá các tính năng khác và tìm hiểu thêm về Google Apps Script để mở rộng khả năng của Google Sheets và tạo ra các ứng dụng tùy chỉnh phù hợp với nhu cầu của bạn.
Cài đặt cần lưu ý
Khi tạo ứng dụng bằng dữ liệu lưu trữ trên Google sheet cần chuyển định dạng sang tiếng Anh. Điều này sẽ giúp việc sử dụng dữ liệu, cụ thể hơn là việc sử dụng truy vấn dữ liệu trên BigQuery sau này được chính xác hơn. Vì mặc định ngôn ngữ tiếng Việt và tiếng Anh sẽ xài hai loại format khác nhau. Ví dụ dấu . dấu , để phân tách đơn vị hàng ngàn. Để cài đặt phần này hãy vào tệp. chọn vào định dạng như hình dưới
Các loại dữ liệu trong thực tế:
Dữ liệu ngày nay đóng vai trò rất quan trọng trong cuộc sống hàng ngày và công việc của chúng ta. Để hiểu và xử lý dữ liệu một cách hiệu quả, chúng ta cần phân biệt các dạng cấu trúc dữ liệu khác nhau. Trong bài viết này, chúng ta sẽ tìm hiểu về hai dạng cấu trúc dữ liệu phổ biến là Dữ liệu dạng dọc (Relational Data Structure) Long và Dữ liệu dạng ngang (Flat Data Structure) Wide.
Dữ liệu dạng dọc có thể biến đổi thành dạng ngang rất dễ dàng trong khi đó dữ liệu dạng ngang **“rất khó”** để biến đổi thành dữ liệu dạng dọc
So sánh giữa dữ liệu dạng dọc và dữ liệu dạng ngang:
Dữ liệu dạng dọc cho phép liên kết dữ liệu giữa các bảng thông qua khóa chính và khóa ngoại, trong khi dữ liệu dạng ngang không có khả năng này.
Dữ liệu dạng dọc có tính nhất quán và độ tin cậy cao hơn so với dữ liệu dạng ngang. Dữ liệu dạng ngang dễ dàng nhập và xuất dữ liệu từ các tập tin như CSV, Excel, trong khi dữ liệu dạng dọc thường yêu cầu sử dụng phần mềm quản lý cơ sở dữ liệu (RDBMS). Dữ liệu dạng dọc phù hợp với những dự án lớn, phức tạp, trong khi dữ liệu dạng ngang thích hợp với những dự án nhỏ, đơn giản.
Định dạng dữ liệu trong App:
Table là nơi lưu trữ các dữ liệu, một App .
Một bảng (table) là một tập hợp các bản ghi cùng loại. Bạn có thể có bảng khách hàng (như bên dưới), bảng trang web việc làm hoặc bảng sản phẩm.
Hãy nghĩ về các bảng như mô phỏng mọi thứ trong thế giới thực: con người, đối tượng, địa điểm, sự kiện, v.v
Tùy theo chức năng và nhiệm vụ mà chúng ta cài đặt các bảng dữ liệu lưu trữ chung hoặc tách riêng.
Một số lưu ý khi tạo dữ liệu trên Appsheet như sau
Tên table và tên header phải là duy nhất
Tên header phải không dấu và không khoảng cách.
Mỗi dòng cần có một key, key này là duy nhất, key này không dấu, không khoảng cách.
Nếu muốn liên kết từ 2 bảng với nhau chúng ta cần key ngoài, forge key.
Các loại dữ liệu Appsheet hỗ trợ:
💡 Để tiện cho việc khai báo cột cho app được nhanh chóng nên tạo sẵn trước 3 dòng dữ liệu ở phía dưới cột header, lúc này appsheet sẽ tự định nghĩa cột dữ liệu ở phía dưới để cài đặt làm loại dữ liệu cho mỗi cột
Lưu ý, khi cài đặt kiểu dữ liệu phải luôn đúng với mọi trường hợp, chỉ một trường hợp trong 10000 trường hợp sai thì dữ liệu đó sẽ sai.
QR code
QR code là gì?
QR code là một dạng mã vạch hai chiều, sử dụng để lưu trữ và truyền tải thông tin một cách nhanh chóng và dễ dàng. Nó có thể được quét bằng điện thoại di động hoặc máy quét mã vạch để truy cập vào các thông tin liên quan, chẳng hạn như địa chỉ web, số điện thoại, hoặc thông tin liên lạc. QR code chỉ là một cách hiển thị dạng text sang hình ảnh có thể quét được ví dụ:
Trong Appsheet chúng ta có thể sử dụng một hàm như sau:
CONCATENATE(“https://chart.googleapis.com/chart?chs=100x100&cht=qr&chl= ”&ENCODEURL([product_id]))
Sau khi sử dụng API của Google sẽ trả về một đường link chứa QR code.
Một số cài đặt cần chú ý
Valid IF (validate) Xác thực dữ liệu
"Valid" trong Appsheet là một tính năng xác thực dữ liệu, nó được sử dụng để kiểm tra rằng dữ liệu nhập vào của người dùng có hợp lệ với quy tắc đã đặt trước đó hay không. Ví dụ, bạn có thể xác thực rằng một số nhập vào phải là số dương hoặc một email nhập vào phải có định dạng chính xác. Nếu dữ liệu nhập vào không hợp lệ, người dùng sẽ nhận được thông báo lỗi và sẽ không thể lưu dữ liệu cho đến khi sửa lại thành dữ liệu hợp lệ.Show IF (hiển thị)
"ShowIF" trong Appsheet là một tính năng điều khiển hiển thị cho phép bạn định nghĩa điều kiện cho việc hiển thị của một trường hoặc một đối tượng giao diện khác trong ứng dụng của bạn. Với tính năng ShowIF, bạn có thể định nghĩa rằng một trường hoặc đối tượng sẽ chỉ hiển thị khi một điều kiện được thỏa mãn. Điều này có thể giúp bạn tạo ra giao diện người dùng động và tùy chỉnh hơn, và giảm bớt sự phức tạp trong việc hiển thị thông tin. Mặc định sẽ là true.Required IF (Yêu cầu nhập)
"Required IF" trong Appsheet có nghĩa là bắt buộc một trường để cần phải điền thông tin nếu một điều kiện được thỏa mãn. Điều này cho phép bạn chỉ yêu cầu người dùng nhập thông tin cho một trường khi điều kiện nào đó được chọn hoặc điền vào. Ví dụ, bạn có thể yêu cầu người dùng nhập thông tin cho trường "Ngày kết thúc" nếu họ chọn "Hoàn thành" trong trường "Trạng thái". Điều này giúp bạn kiểm soát thông tin mà người dùng nhập vào và đảm bảo rằng các thông tin quan trọng được cung cấp.Editable IF (cho phép chỉnh sửa)
"Editable IF" trong Appsheet có nghĩa là cho phép hoặc không cho phép người dùng chỉnh sửa một trường nếu một điều kiện được thỏa mãn. Với tính năng Editable IF, bạn có thể định nghĩa rằng một trường sẽ hoặc không thể được chỉnh sửa tùy thuộc vào giá trị của một trường khác hoặc theo một điều kiện nào đó. Điều này có thể giúp bạn giới hạn quyền truy cập và chỉnh sửa của người dùng để đảm bảo tính toàn vẹn và an toàn của dữ liệu.
Hàm appscript hỗ trợ format lại dữ liệu
Hàm bỏ header sang tieng_viet_khong_dau
function resetSheet() {
var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
for (var i = 0; i < sheets.length; i++) {
var sheet = sheets[i];
var range = sheet.getDataRange();
var values = range.getValues();
var headers = values[0];
// Chuyển đổi các tiêu đề
range.clearFormat();
range.setFontFamily("Arial").setFontSize(11).setBackground("#ffffff").setFontWeight("normal");
for (var j = 0; j < headers.length; j++) {
var header = headers[j];
if (header) {
header = header.toLowerCase(); // Chuyển thành chữ thường
header = header.replace(/[àáạảãâầấậẩẫăằắặẳẵ]/g, 'a');
header = header.replace(/[èéẹẻẽêềếệểễ]/g, 'e');
header = header.replace(/[ìíịỉĩ]/g, 'i');
header = header.replace(/[òóọỏõôồốộổỗơờớợởỡ]/g, 'o');
header = header.replace(/[ùúụủũưừứựửữ]/g, 'u');
header = header.replace(/[ỳýỵỷỹ]/g, 'y');
header = header.replace(/đ/g, 'd');
range.getCell(1, j + 1).setFontFamily("Arial").setFontWeight("bold").setFontSize(12).setBackground("#ebedfc");
headers[j] = header;
}
}
}
}
Hàm chuyển đổi tên sheet sang TIENG_VIET_KHONG_DAU
function convertSheetNames() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets = ss.getSheets(); for (var i = 0; i < sheets.length; i++) { var sheet = sheets[i]; var originalName = sheet.getName(); var convertedName = removeDiacriticsAndSpaces(originalName).toUpperCase(); sheet.setName(convertedName); } } function removeDiacriticsAndSpaces(str) { var diacriticsMap = { 'Á': 'A','À': 'A','Ả': 'A','Ã': 'A','Ạ': 'A','Ă': 'A','Ắ': 'A','Ằ': 'A','Ẳ': 'A','Ẵ': 'A','Ặ': 'A','Â': 'A', 'Ấ': 'A', 'Ầ': 'A', 'Ẩ': 'A', 'Ẫ': 'A', 'Ậ': 'A', 'Đ': 'D', 'É': 'E', 'È': 'E', 'Ẻ': 'E', 'Ẽ': 'E', 'Ẹ': 'E', 'Ê': 'E', 'Ế': 'E', 'Ề': 'E', 'Ể': 'E', 'Ễ': 'E', 'Ệ': 'E', 'Í': 'I', 'Ì': 'I', 'Ỉ': 'I', 'Ĩ': 'I', 'Ị': 'I', 'Ó': 'O', 'Ò': 'O', 'Ỏ': 'O', 'Õ': 'O', 'Ọ': 'O', 'Ô': 'O', 'Ố': 'O', 'Ồ': 'O', 'Ổ': 'O', 'Ỗ': 'O', 'Ộ': 'O', 'Ơ': 'O', 'Ớ': 'O', 'Ờ': 'O', 'Ở': 'O', 'Ỡ': 'O', 'Ợ': 'O', 'Ú': 'U', 'Ù': 'U', 'Ủ': 'U', 'Ũ': 'U', 'Ụ': 'U', 'Ư': 'U', 'Ứ': 'U', 'Ừ': 'U', 'Ử': 'U', 'Ữ': 'U', 'Ự': 'U', 'Ý': 'Y', 'Ỳ': 'Y', 'Ỷ': 'Y', 'Ỹ': 'Y', 'Ỵ': 'Y' }; var result = str.replace(/[\\u00C0-\\u1EFF]/g, function(c) { return diacriticsMap[c] || c; }); return result.replace(/\\s+/g, '_'); }