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
ของไฟล์ที่ต้องการ
แก้ไข
เมื่อคุณเรียกใช้โค้ดตัวอย่าง ไฟล์จะถูกจํากัดเนื้อหาและเป็นสัญลักษณ์แม่กุญแจ (อินเทอร์เฟซผู้ใช้ของ Google ไดรฟ์ (UI) ขณะนี้เป็นแบบอ่านอย่างเดียว
) ปรากฏข้างชื่อไฟล์ภายในนําการจำกัดเนื้อหาออก
หากต้องการนำการจำกัดเนื้อหาไฟล์ออก ให้ใช้เมธอด 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
แล้ว