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