Dịch vụ thuộc tính

Dịch vụ Properties cho phép bạn lưu trữ dữ liệu đơn giản dưới dạng các cặp khoá-giá trị được giới hạn trong một tập lệnh, một người dùng tập lệnh hoặc một tài liệu mà tiện ích bổ sung được dùng. Thường được dùng để lưu trữ cấu hình của nhà phát triển hoặc lựa chọn ưu tiên của người dùng. Các thuộc tính không bao giờ được chia sẻ giữa các tập lệnh.

Để xem hạn mức hằng ngày và giới hạn bộ nhớ của dịch vụ Tài sản, hãy xem Hạn mức cho các dịch vụ của Google.

So sánh các cửa hàng của tài sản

Đối tượng chung PropertiesService cung cấp 3 phương thức, mỗi phương thức trả về một đối tượng Properties tương tự nhưng có các quyền truy cập khác nhau, như minh hoạ trong bảng sau:

Thuộc tính của tập lệnh Thuộc tính người dùng Thuộc tính tài liệu
Phương thức truy cập getScriptProperties() getUserProperties() getDocumentProperties()
Dữ liệu được chia sẻ giữa Tất cả người dùng của một tập lệnh, tiện ích bổ sung hoặc ứng dụng web Người dùng hiện tại của một tập lệnh, tiện ích bổ sung hoặc ứng dụng web Tất cả người dùng của một tiện ích bổ sung trong tài liệu đang mở
Thường dùng cho Dữ liệu cấu hình trên toàn ứng dụng, chẳng hạn như tên người dùng và mật khẩu cho cơ sở dữ liệu bên ngoài của nhà phát triển Chế độ cài đặt dành riêng cho người dùng, chẳng hạn như đơn vị đo lường theo hệ đo lường Anh hoặc hệ đo lường quốc tế Dữ liệu dành riêng cho tài liệu, chẳng hạn như URL nguồn của biểu đồ được nhúng

Định dạng dữ liệu

Dịch vụ Properties lưu trữ tất cả dữ liệu dưới dạng chuỗi trong các cặp khoá-giá trị. Các loại dữ liệu chưa phải là chuỗi sẽ tự động được chuyển đổi thành chuỗi, bao gồm cả các phương thức có trong các đối tượng đã lưu.

Lưu dữ liệu

Để lưu một giá trị duy nhất, hãy gọi phương thức Properties.setProperty(key, value) của kho lưu trữ thích hợp, như trong ví dụ sau:

service/propertyService.gs
try {
  // Set a property in each of the three property stores.
  const scriptProperties = PropertiesService.getScriptProperties();
  const userProperties = PropertiesService.getUserProperties();
  const documentProperties = PropertiesService.getDocumentProperties();

  scriptProperties.setProperty('SERVER_URL', 'http://www.example.com/');
  userProperties.setProperty('DISPLAY_UNITS', 'metric');
  documentProperties.setProperty('SOURCE_DATA_ID',
      '1j3GgabZvXUF177W0Zs_2v--H6SPCQb4pmZ6HsTZYT5k');
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Để lưu dữ liệu hàng loạt, hãy truyền một bản đồ gồm các cặp khoá-giá trị đến Properties.setProperties(properties). Mỗi cặp khoá-giá trị của đối tượng trong tham số được lưu trữ dưới dạng một thuộc tính riêng biệt:

service/propertyService.gs
try {
  // Set multiple script properties in one call.
  const scriptProperties = PropertiesService.getScriptProperties();
  scriptProperties.setProperties({
    'cow': 'moo',
    'sheep': 'baa',
    'chicken': 'cluck'
  });
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Đọc dữ liệu

Để truy xuất một giá trị duy nhất mà bạn đã lưu trước đó, hãy gọi Properties.getProperty(key):

service/propertyService.gs
try {
  // Get the value for the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  const units = userProperties.getProperty('DISPLAY_UNITS');
  console.log('values of units %s', units);
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Để truy xuất tất cả các giá trị trong kho thuộc tính hiện tại, hãy gọi Properties.getProperties():

service/propertyService.gs
try {
  // Get multiple script properties in one call, then log them all.
  const scriptProperties = PropertiesService.getScriptProperties();
  const data = scriptProperties.getProperties();
  for (const key in data) {
    console.log('Key: %s, Value: %s', key, data[key]);
  }
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Sửa đổi dữ liệu

Các phương thức getProperty()getProperties() trả về bản sao của dữ liệu được lưu trữ, chứ không phải khung hiển thị trực tiếp, vì vậy, việc thay đổi đối tượng được trả về sẽ không cập nhật giá trị trong kho lưu trữ thuộc tính. Để cập nhật dữ liệu trong kho lưu trữ, bạn chỉ cần lưu lại dữ liệu đó:

service/propertyService.gs
try {
  // Change the unit type in the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  let units = userProperties.getProperty('DISPLAY_UNITS');
  units = 'imperial'; // Only changes local value, not stored value.
  userProperties.setProperty('DISPLAY_UNITS', units); // Updates stored value.
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Xóa dữ liệu

Để xoá một giá trị duy nhất, hãy gọi Properties.deleteProperty(key):

service/propertyService.gs
try {
  // Delete the user property 'DISPLAY_UNITS'.
  const userProperties = PropertiesService.getUserProperties();
  userProperties.deleteProperty('DISPLAY_UNITS');
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Để xoá tất cả các thuộc tính trong cửa hàng hiện tại, hãy gọi Properties.deleteAllProperties():

service/propertyService.gs
try {
  // Get user properties in the current script.
  const userProperties = PropertiesService.getUserProperties();
  // Delete all user properties in the current script.
  userProperties.deleteAllProperties();
} catch (err) {
  // TODO (developer) - Handle exception
  console.log('Failed with error %s', err.message);
}

Quản lý thuộc tính của tập lệnh theo cách thủ công

Bạn có thể thêm tối đa 50 thuộc tính tuỳ chỉnh theo cách thủ công dưới dạng các chuỗi trong các cặp khoá-giá trị trên trang cài đặt dự án. Để thêm nhiều hơn 50 thuộc tính, bạn cần thêm các thuộc tính đó theo cách có lập trình bằng cách sử dụng các phương thức được mô tả ở trên trong phần Lưu dữ liệu. Khi đặt các thuộc tính tập lệnh trên trang cài đặt dự án, bạn không thể tham chiếu các biến tập lệnh.

Thêm thuộc tính của tập lệnh

  1. Mở dự án Apps Script của bạn.
  2. Ở bên trái, hãy nhấp vào Cài đặt dự án Biểu tượng cho chế độ cài đặt dự án.
  3. Để thêm tài sản đầu tiên, trong phần Script Properties (Thuộc tính tập lệnh), hãy nhấp vào Add script property (Thêm thuộc tính tập lệnh).
  4. Để thêm thuộc tính thứ hai và các thuộc tính tiếp theo, trong phần Thuộc tính của tập lệnh, hãy nhấp vào Chỉnh sửa thuộc tính của tập lệnh > Thêm thuộc tính của tập lệnh.
  5. Đối với Thuộc tính, hãy nhập tên khoá.
  6. Đối với Giá trị, hãy nhập giá trị cho khoá.
  7. (Không bắt buộc) Để thêm các thuộc tính khác, hãy nhấp vào Thêm thuộc tính của tập lệnh.
  8. Nhấp vào Lưu thuộc tính của tập lệnh.

Chỉnh sửa thuộc tính của tập lệnh

  1. Mở dự án Apps Script của bạn.
  2. Ở bên trái, hãy nhấp vào Cài đặt dự án Biểu tượng cho chế độ cài đặt dự án.
  3. Trong phần Thuộc tính của tập lệnh, hãy nhấp vào Chỉnh sửa thuộc tính của tập lệnh.
  4. Thay đổi tên khoá và giá trị khoá cho từng thuộc tính mà bạn muốn thay đổi.
  5. Nhấp vào Lưu thuộc tính của tập lệnh.

Xoá thuộc tính của tập lệnh

  1. Mở dự án Apps Script của bạn.
  2. Ở bên trái, hãy nhấp vào Cài đặt dự án Biểu tượng cho chế độ cài đặt dự án.
  3. Trong phần Thuộc tính của tập lệnh, hãy nhấp vào Chỉnh sửa thuộc tính của tập lệnh.
  4. Bên cạnh tài sản mà bạn muốn xoá, hãy nhấp vào biểu tượng Xoá .
  5. Nhấp vào Lưu thuộc tính của tập lệnh.