Google Drive API 支援多種防止檔案修改方式,包括 檔案內容限制,並禁止使用者下載、列印或複製 檔案。
使用雲端硬碟內容限制,將檔案設為唯讀
您可以為 Google 雲端硬碟檔案新增內容限制,防止使用者 請按照下列步驟操作:
- 修改標題
- 編輯內容
- 上傳修訂版本
- 新增或修改註解
套用內容限制機制 將雲端硬碟項目設為唯讀,而不變更項目的 存取權限。也就是說 而非存取權限制儘管使用者無法修改檔案內容, 系統仍會根據存取層級 (例如, 編輯存取權仍可移動項目或變更項目的共用設定);
如要為雲端硬碟中的檔案新增或移除內容限制,使用者必須具有這項權限
必須具備相關聯的
權限。位於以下地點的檔案或資料夾:
我的雲端硬碟 或共用雲端硬碟:
capabilities.canModifyEditorContentRestriction
,您必須擁有 role=writer
。「我的雲端硬碟」或共用雲端硬碟中的檔案或資料夾
「ownerRestricted
」內容限制,您必須是檔案擁有者,或是
role=organizer
。使用者必須符合以下條件,才能查看設有內容限制的項目
role=reader
以上版本。如需完整的角色清單,請參閱 角色與
權限。如要變更檔案的權限,請參閱
變更權限。
您可以使用 contentRestrictions.readOnly
布林值欄位
要設定的 files
項資源
內容限制請注意,你可以對某個項目設定內容限制
會覆寫現有參數
內容限制的情境
雲端硬碟項目的內容限制會指示使用者 內容。可能的原因如下:
- 在檢閱或稽核期間暫停協作文件。
- 將項目設為最終狀態,例如「已核准」。
- 防止在敏感會議期間進行變更。
- 針對自動化系統處理的工作流程禁止外部變更。
- 限制 Google Apps Script 和 Google Workspace 外掛程式的編輯內容。
- 避免意外編輯文件。
請注意,雖然內容限制有助於管理內容,但 目的是避免擁有足夠權限的使用者 項目。此外,您無法建立不可變動的記錄。 雲端硬碟內容限制可以變動,因此設有內容限制 並不保證項目一定不會變更。
管理有內容限制的檔案
Google 文件、Google 試算表、Google 簡報 和所有其他檔案 都可能含有內容限制。
項目的內容限制禁止變更其標題和內容。 包括:
- 註解和建議 (在 Google 文件、試算表、 投影片和二進位檔案)
- 二進位檔案的修訂版本
- Google 文件中的文字和格式
- 在 Google 試算表中輸入文字或公式 和例項
- Google 簡報中所有內容,以及 投影片
部分檔案類型不得包含內容限制。下列為幾個範例:
- Google 表單
- Google 協作平台
- Google 繪圖
- 捷徑和第三方捷徑。詳情請參閱建立 這個檔案會指向您的 應用程式,以及如何建立捷徑 雲端硬碟檔案。
新增內容限制
如要新增檔案內容限制,請使用
files.update
方法,搭配
contentRestrictions.readOnly
欄位已設為 true
。新增選用的 reason
:
為何要新增限制,例如「敲定合約」下列
程式碼範例顯示如何新增內容限制:
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;
}
}
將 FILE_ID 替換為所需檔案的 fileId
修改。
執行程式碼範例時,這個檔案會受到限制,並加上鎖頭符號 (Google 雲端硬碟使用者介面 (使用者介面)。 檔案現在是唯讀狀態
) 顯示在移除內容限制
如要移除檔案內容限制,請使用 files.update
方法搭配
contentRestrictions.readOnly
欄位已設為 false
。以下程式碼範例
顯示如何移除內容限制:
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;
}
}
將 FILE_ID 替換為所需檔案的 fileId
修改。
執行程式碼範例時,這個檔案就不再受到限制。
您也可以透過雲端硬碟 UI 移除內容限制,以及 允許內容編輯 (前提是您已取得正確的權限)。這裡共有兩個 建議做法:
在雲端硬碟中,在有內容限制的檔案上按一下滑鼠右鍵,然後 按一下「解鎖
」。開啟有內容限制的檔案,然後按一下 (鎖定模式) > 解鎖檔案。
檢查內容限制
如要查看內容限制,請使用
files.get
方法,搭配
contentRestrictions
傳回的欄位。以下程式碼範例說明如何
查看內容限制的狀態:
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;
}
}
將 FILE_ID 替換為所需檔案的 fileId
檢查。
執行程式碼範例時,該方法會傳回
ContentRestriction
敬上
資源 (如有)
新增只有檔案擁有者才能修改的內容限制
如要新增檔案內容限制,僅供檔案擁有者切換機制,
使用 files.update
方法搭配
contentRestrictions.ownerRestricted
布林值欄位設為 true
。
以下程式碼範例顯示如何為檔案擁有者新增內容限制
僅適用於:
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;
}
}
將 FILE_ID 替換為所需檔案的 fileId
修改。
執行程式碼範例時,這個檔案會受到限制,只有檔案 且擁有者可以將其移除。如果您是檔案擁有者,[] 中的檔案名稱旁會顯示有效鎖定符號 (。如果 您不是擁有者,鎖頭符號會變暗。 ) 雲端硬碟使用者介面 (使用者介面)
如要移除 ownerRestricted
標記,請使用 files.update
方法,並搭配
contentRestrictions.ownerRestricted
欄位已設為「false
」。
內容限制功能
files
資源包含
布林值 capabilities
欄位集合,用來表示動作
適用於單一檔案
內容限制包含下列capabilities
:
capabilities.canModifyEditorContentRestriction
:目前的使用者 新增或修改內容限制。capabilities.canModifyOwnerContentRestriction
:目前的使用者 您可以新增或修改擁有者內容限制。capabilities.canRemoveContentRestriction
:目前使用者是否可 移除已套用的內容限制 (如有)。
若需更多資訊,請參閲 功能。
如需擷取檔案 capabilities
的範例,請參閱驗證使用者
權限。
禁止使用者下載、列印或複製您的檔案
您可以限制具備「role=commenter
」或「role=reader
」權限的使用者可執行的操作
在雲端硬碟中下載、列印及複製檔案
文件、試算表和簡報
如要移除下載、列印及複製檔案的選項,請使用
files.update
方法,搭配
copyRequiresWriterPermission
布林值欄位已設為 true
。