API Google Drive hỗ trợ một số cách để ngăn chặn việc sửa đổi tệp, bao gồm cả việc hạn chế nội dung tệp và cấm tải xuống, in hoặc sao chép tệp.
Đặt tệp ở chế độ chỉ có thể đọc bằng các quy định hạn chế về nội dung trên Drive
Bạn có thể thêm quy định hạn chế nội dung vào một tệp trên Google Drive để ngăn người dùng làm 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
Việc áp dụng các quy định hạn chế nội dung là một cơ chế cho phép đặt nội dung của một mục trên Drive ở chế độ chỉ có thể đọc mà không thay đổi quyền truy cập của mục đó. Điều này có nghĩa là đó không phải là quy định 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 thao tác khác vẫn được cho phép 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 chia sẻ của mục đó).
Để thêm hoặc xoá quy định hạn chế nội dung đối với một tệp trong Drive, người dùng phải có quyền liên quan. Đối với một tệp hoặc thư mục trong
Drive của tôi hoặc một bộ nhớ dùng chung có
capabilities.canModifyEditorContentRestriction
, bạn phải được chỉ định role=writer
. Đố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ó giới hạn nội dung ownerRestricted
, bạn phải sở hữu tệp đó hoặc có role=organizer
. Để xem một mục có hạn chế về nội dung, người dùng phải có role=reader
trở lên. Để xem danh sách đầy đủ các vai trò, hãy xem phần Vai trò và quyền. Để thay đổi quyền trên một tệp, hãy xem phần Thay đổi quyền.
Bạn có thể sử dụng trường boolean contentRestrictions.readOnly
trên tài nguyên files
để đặt giới hạn nội dung. Xin lưu ý rằng việc đặt giới hạn nội dung cho một mục sẽ ghi đè giới hạn nội dung hiện có.
Các trường hợp áp dụng quy định hạn chế về nội dung
Giới hạn nội dung trên một mục trên Drive cho người dùng biết rằng họ không được thay đổi nội dung đó. Điều này có thể là do một số lý do sau:
- Tạm dừng công việc trên 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.
- Nghiêm cấm thay đổi bên ngoài đối với quy trình làm việc do hệ thống tự động xử lý.
- Hạn chế nội dung chỉnh sửa của Google Apps Script và tiện ích bổ sung của Google Workspace.
- Tránh việc chỉnh sửa tài liệu do vô ý.
Tuy nhiên, xin lưu ý rằng mặc dù các quy định hạn chế nội dung có thể giúp quản lý nội dung, nhưng không nhằm mục đích ngăn người dùng có đủ quyền tiếp tục làm việc trên một mục. Ngoài ra, đây không phải là cách để tạo bản ghi không thể thay đổi. Các quy định hạn chế về nội dung trên Drive có thể thay đổi, vì vậy, quy định hạn chế về 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ý các tệp có quy định hạn chế về 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 nội dung bị hạn chế.
Khi một mặt hàng bị giới hạn nội dung, bạn sẽ không thể 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 của 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à các 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 không được chứa nội dung bị hạn chế. 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 của bạn lưu trữ và Tạo lối tắt đến tệp trên Drive.
Thêm giới hạn nội dung
Để thêm quy định hạn chế nội dung tệp, hãy sử dụng phương thức files.update
với trường contentRestrictions.readOnly
được đặt thành true
. Thêm reason
không bắt buộc cho lý do bạn thêm quy định hạn chế, chẳng hạn như "Hợp đồng đã hoàn tất". Mẫu mã sau đây cho biết cách thêm quy định hạn chế 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 chỉnh sửa.
Khi bạn chạy mã mẫu, tệp sẽ bị hạn chế nội dung và biểu tượng khoá (giao diện người dùng (UI) của Google Drive. Tệp hiện ở chế độ chỉ đọc.
) sẽ xuất hiện bên cạnh tên tệp trongXoá quy định hạn chế về nội dung
Để xoá giới hạn nội dung tệp, hãy sử dụng phương thức files.update
với trường contentRestrictions.readOnly
được đặt thành false
. Mẫu mã sau đây cho biết cách xoá một quy định hạn chế 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 chỉnh sửa.
Khi bạn chạy mã mẫu, tệp này sẽ không còn bị hạn chế nội dung nữa.
Bạn cũng có thể sử dụng giao diện người dùng của Drive để xoá quy định hạn chế nội dung và cho phép chỉnh sửa nội dung (miễn là bạn có quyền thích hợp). Có hai cách để 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 rồi nhấp vào Mở khoá
.Mở tệp có giới hạn nội dung rồi nhấp vào biểu tượng (Chế độ khoá) > Mở khoá tệp.
Kiểm tra xem có quy định hạn chế về nội dung không
Để kiểm tra xem có quy định hạn chế nội dung hay không, hãy sử dụng phương thức files.get
với 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 một quy định hạn chế 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 kiểm tra.
Khi bạn chạy mã mẫu, phương thức này sẽ trả về tài nguyên ContentRestriction
nếu có.
Thêm giới hạn nội dung mà chỉ chủ sở hữu tệp mới có thể sửa đổi
Để thêm quy định hạn chế nội dung tệp để chỉ chủ sở hữu tệp mới có thể bật/tắt cơ chế này, hãy sử dụng phương thức files.update
với trường boolean contentRestrictions.ownerRestricted
được đặt thành true
. Mẫu mã sau đây cho biết cách chỉ thêm quy định hạn chế nội dung cho chủ sở hữu tệp:
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 chỉnh sửa.
Khi bạn chạy mã mẫu, tệp sẽ bị hạn chế nội dung và chỉ chủ sở hữu tệp mới có thể xoá tệp đó. Nếu bạn là chủ sở hữu tệp, thì biểu tượng khoá đang hoạt động ( giao diện người dùng (UI) của Drive. Nếu bạn không phải là chủ sở hữu, biểu tượng khoá sẽ bị 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 trường contentRestrictions.ownerRestricted
được đặt thành false
.
Các tính năng hạn chế nội dung
Tài nguyên files
chứa một tập hợp các trường capabilities
boolean dùng để cho biết liệu có thể thực hiện một thao tác trên tệp hay không.
Giới hạn nội dung chứa capabilities
sau:
capabilities.canModifyEditorContentRestriction
: Liệu người dùng hiện tại có thể thêm hoặc sửa đổi hạn chế nội dung hay không.capabilities.canModifyOwnerContentRestriction
: Liệu người dùng hiện tại có thể thêm hoặc sửa đổi quy định hạn chế nội dung của chủ sở hữu hay không.capabilities.canRemoveContentRestriction
: Liệu người dùng hiện tại có thể xoá hạn chế nội dung đã áp dụng hay không (nếu có).
Để biết thêm thông tin, hãy xem phần Tính năng.
Để biết ví dụ về cách truy xuất tệp capabilities
, hãy xem phần Xác minh quyền của người dùng.
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
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 phương thức files.update
với trường boolean copyRequiresWriterPermission
được đặt thành true
.