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 Sites
- 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
ของไฟล์ที่ต้องการแก้ไข
เมื่อคุณเรียกใช้โค้ดตัวอย่าง ไฟล์จะถูกจำกัดเนื้อหาและสัญลักษณ์แม่กุญแจ (อินเทอร์เฟซผู้ใช้ (UI) ของ 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 ของไดรฟ์เพื่อนำข้อจำกัดของเนื้อหาออกและอนุญาตให้แก้ไขเนื้อหาได้ด้วย (หากมีสิทธิ์ที่เหมาะสม) โดยคุณดำเนินการได้ 2 วิธีดังนี้
ในไดรฟ์ ให้คลิกขวาที่ไฟล์ที่มีการจำกัดเนื้อหา แล้วคลิกปลดล็อก
เปิดไฟล์ที่มีการจำกัดเนื้อหา แล้วคลิก (โหมดล็อก) > ปลดล็อกไฟล์
ตรวจสอบการจำกัดเนื้อหา
หากต้องการตรวจสอบการจํากัดเนื้อหา ให้ใช้เมธอด 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
ของไฟล์ที่ต้องการแก้ไข
เมื่อคุณเรียกใช้โค้ดตัวอย่าง ไฟล์จะถูกจำกัดเนื้อหาและมีเพียงเจ้าของไฟล์เท่านั้นที่จะนำออกได้ หากคุณเป็นเจ้าของไฟล์ สัญลักษณ์แม่กุญแจที่ทำงานอยู่ ( หากคุณไม่ใช่เจ้าของ สัญลักษณ์แม่กุญแจจะสลัว
) จะปรากฏข้างชื่อไฟล์ในหากต้องการนำ Flag ownerRestricted
ออก ให้ใช้เมธอด files.update
โดยตั้งค่าฟิลด์ contentRestrictions.ownerRestricted
เป็น false
ความสามารถด้านการจำกัดเนื้อหา
ทรัพยากร files
มีชุดฟิลด์บูลีน capabilities
ที่ใช้เพื่อระบุว่าสามารถดําเนินการกับไฟล์ได้หรือไม่
การจำกัดเนื้อหามี capabilities
ต่อไปนี้
capabilities.canModifyEditorContentRestriction
: ผู้ใช้ปัจจุบันสามารถเพิ่มหรือแก้ไขการจำกัดเนื้อหาได้หรือไม่capabilities.canModifyOwnerContentRestriction
: ผู้ใช้ปัจจุบันสามารถเพิ่มหรือแก้ไขการจำกัดเนื้อหาของเจ้าของได้หรือไม่capabilities.canRemoveContentRestriction
: ผู้ใช้ปัจจุบันสามารถนําการจํากัดเนื้อหาที่ใช้อยู่ออกได้หรือไม่ (หากมี)
ดูข้อมูลเพิ่มเติมได้ที่ความสามารถ
ดูตัวอย่างการเรียกข้อมูลไฟล์ capabilities
ได้ที่ยืนยันสิทธิ์ของผู้ใช้
ป้องกันไม่ให้ผู้ใช้ดาวน์โหลด พิมพ์ หรือคัดลอกไฟล์
คุณสามารถจำกัดวิธีที่ผู้ใช้ที่มีสิทธิ์ role=commenter
หรือ role=reader
ดาวน์โหลด พิมพ์ และคัดลอกไฟล์ภายในไดรฟ์ เอกสาร ชีต และสไลด์ได้
หากต้องการนำตัวเลือกในการดาวน์โหลด พิมพ์ และคัดลอกไฟล์ออก ให้ใช้เมธอด files.update
โดยตั้งค่าฟิลด์บูลีน copyRequiresWriterPermission
เป็น true