API Google Drive hỗ trợ một số cách để ngăn chặn việc sửa đổi tệp, bao gồm giới hạn nội dung tệp và cấm lựa chọn tải xuống, in hoặc sao chép tệp.
Đặt tệp ở chế độ chỉ có thể đọc bằng chế độ giới hạn nội dung trong Drive
Bạn có thể thêm giới hạn nội dung vào tệp trên Google Drive để ngăn người dùng thực hiện những việc sau:
- Sửa đổi tiêu đề
- Chỉnh sửa nội dung
- Tải bản sửa đổi lên
- Thêm hoặc sửa đổi nhận xét
Áp dụng hạn chế nội dung là một cơ chế cho phép nội dung của Chuyển mục trên Drive thành chỉ đọc mà không thay đổi truy cập quyền. Điều này có nghĩa là không phải là hạn chế quyền truy cập. Mặc dù người dùng không thể sửa đổi nội dung của tệp, nhưng các hệ thống khác vẫn được phép thực hiện các hoạt động dựa trên cấp truy cập (ví dụ: người dùng có quyền chỉnh sửa vẫn có thể di chuyển một mục hoặc thay đổi chế độ cài đặt cách chia sẻ của mục đó).
Cách thêm hoặc xoá chế độ giới hạn nội dung của một tệp trong Drive:
phải có liên kết
quyền. Đối với một tệp hoặc thư mục trong
Drive của tôi hoặc bộ nhớ dùng chung có
capabilities.canModifyEditorContentRestriction
, bạn phải có role=writer
được chỉ định. Đối với một tệp hoặc thư mục trong phần Drive của tôi hoặc bộ nhớ dùng chung có
giới hạn nội dung ownerRestricted
, bạn phải sở hữu tệp hoặc phải
role=organizer
Để xem một mục có giới hạn nội dung, người dùng phải
role=reader
trở lên. Để có danh sách vai trò đầy đủ, hãy xem Vai trò và
quyền truy cập. Để thay đổi quyền đối với một tệp, hãy xem
Thay đổi quyền.
Bạn có thể sử dụng trường boolean contentRestrictions.readOnly
trên
Tài nguyên files
cần đặt
giới hạn nội dung. Lưu ý rằng việc đặt giới hạn nội dung cho một mục
sẽ ghi đè thông tin hiện có.
Các trường hợp hạn chế nội dung
Quy định hạn chế về nội dung đối với một mục trên Drive báo hiệu cho người dùng rằng không thay đổi nội dung. Điều này có thể là vì một số lý do sau:
- Tạm dừng công việc trên một tài liệu cộng tác trong thời gian xem xét hoặc kiểm tra.
- Đặt một mục thành trạng thái hoàn tất, chẳng hạn như đã phê duyệt.
- Ngăn chặn các thay đổi trong cuộc họp nhạy cảm.
- Cấm thực hiện các thay đổi bên ngoài đối với quy trình công việc do các hệ thống tự động xử lý.
- Hạn chế việc chỉnh sửa bằng Google Apps Script và các tiện ích bổ sung của Google Workspace.
- Tránh việc chỉnh sửa tài liệu do vô tình.
Xin lưu ý rằng mặc dù giới hạn nội dung có thể giúp bạn quản lý nội dung nhưng nhằm ngăn người dùng có đủ quyền tiếp tục hoạt động trên mục. Ngoài ra, đây không phải là cách tạo bản ghi bất biến. Các giới hạn nội dung trong Drive có thể thay đổi, vì vậy việc giới hạn nội dung trên một mục không đảm bảo rằng mục đó sẽ không bao giờ thay đổi.
Quản lý tệp có giới hạn nội dung
Google Tài liệu, Google Trang tính và Google Trang trình bày, cũng như tất cả các tệp khác, có thể chứa giới hạn nội dung.
Quy định hạn chế về nội dung đối với một mặt hàng sẽ ngăn chặn việc thay đổi tiêu đề và nội dung của mặt hàng đó. bao gồm:
- Nhận xét và đề xuất (trên Tài liệu, Trang tính, Trang trình bày và tệp nhị phân)
- Bản sửa đổi tệp nhị phân
- Văn bản và định dạng trong Tài liệu
- Văn bản hoặc công thức trong Trang tính, bố cục Trang tính và thực thể trong Trang tính
- Tất cả nội dung trong Trang trình bày, cũng như thứ tự và số lượng trang trình bày
Một số loại tệp nhất định không thể có giới hạn nội dung. Một số ví dụ như:
- Google Biểu mẫu
- Google Sites
- Google Bản vẽ
- Lối tắt và lối tắt của bên thứ ba. Để biết thêm thông tin, hãy xem phần Tạo tệp lối tắt đến nội dung do ứng dụng và Tạo lối tắt đến tệp trên Drive.
Thêm giới hạn nội dung
Để giới hạn nội dung tệp, hãy sử dụng
files.update
bằng phần tử
Đã đặt trường contentRestrictions.readOnly
thành true
. Thêm reason
không bắt buộc cho
tại sao bạn thêm quy tắc hạn chế này, chẳng hạn như "Hợp đồng đã hoàn tất". Nội dung sau đây
mã mẫu cho biết cách thêm giới hạn nội dung:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
// Get credentials and build service
// TODO (developer) - Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
const contentRestriction = {
'readOnly': True,
'reason': 'Finalized contract.',
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Thay thế FILE_ID bằng fileId
của tệp mà bạn muốn
sửa đổi.
Khi bạn chạy mã mẫu, tệp sẽ bị hạn chế nội dung và một biểu tượng khoá (giao diện người dùng của Google Drive (Giao diện người dùng). Chiến lược phát hành đĩa đơn ở chế độ chỉ đọc.
) xuất hiện bên cạnh tên tệp trongXoá giới hạn nội dung
Để xoá quy định hạn chế về nội dung tệp, hãy dùng phương thức files.update
với
Đã đặt trường contentRestrictions.readOnly
thành false
. Mã mẫu sau đây
hướng dẫn cách gỡ bỏ quy định hạn chế về nội dung:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(false));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': False}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
// Get credentials and build service
// TODO (developer) - Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
const contentRestriction = {
'readOnly': False,
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Thay thế FILE_ID bằng fileId
của tệp mà bạn muốn
sửa đổi.
Khi bạn chạy mã mẫu, tệp không còn bị hạn chế nội dung nữa.
Bạn cũng có thể dùng giao diện người dùng của Drive để gỡ bỏ hạn chế về nội dung và cho phép chỉnh sửa nội dung (miễn là bạn có quyền phù hợp). Có hai tùy chọn để thực hiện việc này:
Trong Drive, hãy nhấp chuột phải vào tệp có giới hạn nội dung và nhấp vào Mở khoá
.Mở tệp có giới hạn nội dung rồi nhấp vào (Chế độ khoá) > Mở khoá tệp.
Kiểm tra xem có giới hạn nội dung không
Để kiểm tra xem có giới hạn nội dung không, hãy sử dụng
files.get
bằng phần tử
Trường được trả về contentRestrictions
. Mã mẫu sau đây cho biết cách
kiểm tra trạng thái của quy định hạn chế về nội dung:
Java
File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();
Python
response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();
Node.js
/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
// Get credentials and build service
// TODO (developer) - Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
try {
const response = await service.files.get({
fileId: 'FILE_ID',
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Thay thế FILE_ID bằng fileId
của tệp mà bạn muốn
.
Khi bạn chạy mã mẫu, phương thức này sẽ trả về một
ContentRestriction
nếu có.
Thêm chế độ giới hạn nội dung mà chỉ chủ sở hữu tệp mới có thể sửa đổi
Cách thêm giới hạn nội dung tệp để chỉ chủ sở hữu tệp mới có thể bật/tắt cơ chế này,
sử dụng phương thức files.update
với
trường boolean contentRestrictions.ownerRestricted
được đặt thành true
. Chiến lược phát hành đĩa đơn
mã mẫu sau đây cho biết cách thêm giới hạn nội dung cho chủ sở hữu tệp
chỉ:
Java
File updatedFile =
new File()
.setContentRestrictions(
ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));
File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();
Python
content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}
response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();
Node.js
/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
// Get credentials and build service
// TODO (developer) - Use appropriate auth mechanism for your app
const {GoogleAuth} = require('google-auth-library');
const {google} = require('googleapis');
const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
const service = google.drive({version: 'v3', auth});
const contentRestriction = {
'readOnly': True,
'ownerRestricted': True,
'reason': 'Finalized contract.',
};
const updatedFile = {
'contentRestrictions': [contentRestriction],
};
try {
const response = await service.files.update({
fileId: 'FILE_ID',
resource: updatedFile,
fields: 'contentRestrictions',
});
return response;
} catch (err) {
// TODO (developer) - Handle error
throw err;
}
}
Thay thế FILE_ID bằng fileId
của tệp mà bạn muốn
sửa đổi.
Khi bạn chạy mã mẫu, tệp sẽ bị giới hạn nội dung và chỉ là tệp chủ sở hữu có thể xoá nội dung đó. Nếu bạn là chủ sở hữu tệp, biểu tượng khoá đang hoạt động ( Giao diện người dùng của Drive (Giao diện người dùng). Nếu bạn không phải là chủ sở hữu thì biểu tượng khoá bị làm mờ.
) sẽ xuất hiện bên cạnh tên tệp trongĐể xoá cờ ownerRestricted
, hãy sử dụng phương thức files.update
với phần tử
Đã đặt trường contentRestrictions.ownerRestricted
thành false
.
Khả năng giới hạn nội dung
Tài nguyên files
chứa phần tử
tập hợp các trường boolean capabilities
dùng để cho biết liệu một hành động
trên một tệp.
Các giới hạn nội dung bao gồm capabilities
sau:
capabilities.canModifyEditorContentRestriction
: Liệu người dùng hiện tại có có thể thêm hoặc sửa đổi giới hạn nội dung.capabilities.canModifyOwnerContentRestriction
: Liệu người dùng hiện tại có có thể thêm hoặc sửa đổi giới hạn nội dung của chủ sở hữu.capabilities.canRemoveContentRestriction
: Liệu người dùng hiện tại có thể xoá quy định hạn chế về nội dung đã áp dụng (nếu có).
Để biết thêm thông tin, hãy xem Chức năng.
Để xem ví dụ về cách truy xuất tệp capabilities
, hãy xem phần Xác minh người dùng
quyền.
Ngăn người dùng tải xuống, in hoặc sao chép tệp của bạn
Bạn có thể giới hạn cách người dùng có quyền role=commenter
hoặc role=reader
có thể
tải xuống, in và sao chép tệp trong Drive,
Tài liệu, Trang tính và Trang trình bày.
Để xoá các tuỳ chọn tải xuống, in và sao chép tệp, hãy sử dụng
files.update
bằng phần tử
Trường boolean copyRequiresWriterPermission
được đặt thành true
.