Cách lưu trữ trong Google Apps Script – PropertiesService

https://hocggsheet.com/luu-tru-apps-script-properties-service/

Có 3 cách cơ bản để lưu trữ thông tin bằng Google Apps Script: 1. Sử dụng Properties Service 2. Lưu trữ thông qua cơ sở dữ liệu ngoài (external database) – JDBC 3. Sử dụng Content Service

Trong bài này, mình sẽ hướng dẫn các bạn cách sử dụng service Properties để lưu trữ và quản lý dữ liệu.

Ưu và Nhược

Trước khi đi vào cú pháp các lệnh, hãy cùng phân tích một số điểm ưu và nhược của service Properties

Ưu

1. Nhanh, nhỏ gọn, và tiện lợi

So vơi phương pháp lưu trữ khác là JDBC (Java Database Connectivity) thì sử dụng service Properties sẽ tiết kiệm thời gian hơn rất nhiều. Bạn sẽ không cần phải đi qua các bước thiết lập kết nối phức tạp giữa script và database mà sử dụng các phương thức để lưu trữ ngay luôn.

2. Quản lý database ngay trên Google Apps Script

Như chúng ta đã biết (hoặc bây giờ biết) thì để lưu trữ thông tin, chúng ta buộc phải thiết lập kết nối giữa Nơi chứa mã nguồn và Nơi chứa dữ liệu (database). Thường thì database sẽ tách rời ra khỏi mã nguồn và hoạt động độc lập. Dẫn đến việc kết nối 2 cái lại với nhau sẽ tương đối phức tạp.

Với service Properties, người dùng sẽ quản lý database trực tiếp trên giao diện Google Apps Script mà không phải kết nối đến bên thứ 3 nào. Đây cũng chính là ưu điểm lớn của service này.

Để mở phần quản lý database, bạn vào File -> Chọn Project properties

Cửa sổ Project properties mở ra, bạn chọn tiếp thẻ Script properties. Giao diện quản lý database của service Properties sẽ trông như hình sau:

Trong đó, cột Property (hay còn gọi là “key”) hoạt động với vai trò “khóa”, chứa tên hoặc loại thông tin cần lưu trữ, và cột Value chưa nội dung thông tin cần lưu trữ. Nếu chúng ta cần truy cập vào 1 thông tin được lưu nào đó, thì chúng ta cần gọi “khóa” của nó ra.

Nhược – giới hạn lưu trữ

Phương pháp nào thì cũng có phần ưu và nhược. Tùy vào đặc điểm của nó mà bạn có thể chọn cách thức phù hợp với nhu cầu. Service Properties bị giới hạn một số điều kiện như sau:

  • Tổng dung lượng lưu trữ của Script properties (bên trên): 500 kB (kilobyte), tương ứng khoảng 500,000 kí tự

  • Mỗi Value có dung lượng tối đa là 9 kB, tương ứng khoảng 9000 kí tự

  • Mỗi tài khoản Google cơ bản có giới hạn số lần đọc / ghi properties là 50,000 lần / ngày

Cú pháp

Phân loại các properties

Service properties cung cấp 3 loại phương thức, khác nhau về quyền truy cập:

getScriptProperties()

Quyền truy cập: tất cả người dùng đang sử dụng apps script / add-on / web app

getUserProperties()

Quyền truy cập: người dùng hiện tại đang sử dụng apps script / add-on / web app

getDocumentProperties()

Quyền truy cập: tất cả người dùng đang sử dụng add-on / web app trong điều kiện kết nối với ít nhất 1 document (Google Trang tính, Tài liệu,…). Nếu chỉ sử dụng phương thức này độc lập (web-app), thì kết quả trả về là null

Lưu

01

setProperty(key, value)

Để lưu 1 hàng dữ liệu gồm key và nội dung thì bạn chỉ cần dùng hàm này là được. Ví dụ:

01234

function luuTru() { var prop = PropertiesService.getScriptProperties(); prop.setProperty("Môn học", "Toán");}

01

setProperties(properties)

Để lưu trữ một lúc nhiều hàng dữ liệu, chúng ta sử dụng phương thức này. Dữ liệu phức tạp được lưu vào phải được viết dưới dạng 1 object. Ví dụ:

012345

function luuTru() { var prop = PropertiesService.getScriptProperties(); var list = {"Môn học": 'Toán', Thời_gian: '9:00 AM', Nơi: 'Lớp 10A'}; prop.setProperties(list);}

Lưu ý: – Tên khóa có nhiều hơn 1 từ phải được đặt trong dấu nháy ( ‘ ‘ ) hoặc có dấu gạch dưới ( _ ) giữa các từ – Nội dung (Value) phải được đặt trong dấu nháy

Đọc

01

getKeys()

Hàm này có tác dụng trả về tất cả các khóa đang có trong database. Kết quả trả về có dạng Mảng 1 chiều, với ví dụ trên thì kết quả từ hàm getKeys() là: [Môn học, Thời_gian, Nơi]

01

getProperties()

Trả về tất cả các cặp khóa – value có trong database (dưới dạng object). Với ví dụ trên thì kết quả trả về là: {Môn học=Toán, Thời_gian=9:00 AM, Nơi=Lớp 10A}

01

getProperty(key)

Trả về value tương ứng với khóa trong ngoặc. Ví dụ:

01234

function luuTru() { var prop = PropertiesService.getScriptProperties(); prop.getProperty("Nơi");}

Kết quả trả về (dưới dạng string) là “Lớp 10A”

Chỉnh sửa

Không có câu lệnh chỉnh sửa riêng biệt, để chỉnh sửa các bạn chỉ đơn giản là sử dụng setProperies() hoặc setPropery() để ghi đè lên thôi. Ví dụ:

01234

function luuTru() { var prop = PropertiesService.getScriptProperties(); prop.setProperty("Nơi", "Vũng Tàu")}

Xóa

01

deleteProperty(key)

Xóa 1 hàng dữ liệu, ví dụ:

01234

function luuTru() { var prop = PropertiesService.getScriptProperties(); prop.deleteProperty("Môn học");}

Các bạn cũng có thể bấm nút “Delete” như trên hình cho nhanh cũng được

01

deleteAllProperties()

Xóa tất cả các dòng có trong database (clear database)

01234

function luuTru() { var prop = PropertiesService.getScriptProperties(); prop.deleteAllProperties()}

Last updated

Navigation

Lionel

@Copyright 2023